类变量和实例变量
class A :
aa = 1
def __init__ ( self, x, y) :
self. x = x
self. y = y
a = A( 2 , 3 )
"""
a 是实例
aa 是类变量
####################
如果用
A.aa =100 修改的是类的变量
a.aa =101 会在a实例中创建一个名叫aa的属性,并赋值,如果本身就有aa属性,才修改。
####################
"""
类方法,静态方法,实例方法
class Date :
def __init__ ( self, year, month, day) :
self. year = year
self. month = month
self. day = day
def tomorrow ( self) :
self. day += 1
@staticmethod
def parse_from_string ( date_str) :
"""
静态方法,
前面是不需要加self的
return 采取硬编码的方式,如果类名改了,这里也需要改,不友好
所以出现了 @classmethod 类方法
"""
year, mouth, day = tuple ( date_str. split( "-" ) )
return Date( int ( year) , int ( mouth) , int ( day) )
@classmethod
def form_string ( cls, date_str) :
"""
类方法,cls就是类本身
这样就避免了硬编码
"""
year, mouth, day = tuple ( date_str. split( "-" ) )
return cls( int ( year) , int ( mouth) , int ( day) )
def __str__ ( self) :
return f"{self.year}/{self.month}/{self.day}"
if __name__ == "__main__" :
new_day = Date( 2018 , 12 , 31 )
new_day. tomorrow( )
print ( new_day)
date_str = "2018-12-31"
year, mouth, day = tuple ( date_str. split( "-" ) )
print ( year, mouth, day)
new_day = Date( int ( year) , int ( mouth) , int ( day) )
date_str = "2018-12-31"
new_day = Date. parse_from_string( date_str)
print ( new_day)
date_str = "2018-12-31"
new_day = Date. form_string( date_str)
print ( new_day)