classa:
aa =
1def
__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
# 例項方法
deftomorrow
(self)
: self.day +=
1# 如果要修改類變數
# date.day += 1
# 如不用self,會賦給例項變數
# 靜態方法
@staticmethod
defparse_from_string
(date_str)
:"""
靜態方法,
前面是不需要加self的
return 採取硬編碼的方式,如果類名改了,這裡也需要改,不友好
所以出現了 @classmethod 類方法
"""year, mouth, day =
tuple
(date_str.split(
"-")
)return date(
int(year)
,int
(mouth)
,int
(day)
) @classmethod
defform_string
(cls,date_str)
:"""
類方法,cls就是類本身
這樣就避免了硬編碼
"""year, mouth, day =
tuple
(date_str.split(
"-")
)return cls(
int(year)
,int
(mouth)
,int
(day)
)def
__str__
(self)
:# 大於 python 3.6 f""
return f"//"
if __name__ ==
"__main__"
: new_day = date(
2018,12
,31) new_day.tomorrow(
)print
(new_day)
#2018-12-31
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)
# 使用@classmethod
date_str =
"2018-12-31"
new_day = date.form_string(date_str)
print
(new_day)
# 判斷乙個字串是否是合法的時間字串
# 使用 @staticmethod 比 @classmethod 更合理
# 因為不需要返回cls
Python 類方法,例項方法,類變數,例項變數
建立乙個person類 class person object per v per v 建立乙個類變數 def init self,name,age 初始化類例項變數 self.name name self.age age definstance method self 建立類例項方法 print ...
例項變數和類變數 類方法和例項方法
類體中包括成員變數和區域性變數,而成員變數又可以細分為例項變數和類變數,在宣告成員變數的時候,用static給予修飾的稱作類變數,否則稱作例項變數。類變數也稱為static變數,靜態變數 那麼,類變數和例項變數有什麼區別呢?我們知道,乙個類通過使用new運算子可以建立多個不同的物件,這些物件將被分配...
Java中類變數 類方法 例項變數 例項方法
在理解類變數 類方法之前先看一段 class person public static void showtotalfee 在person類中定義了3個變數,有2個變數是直接型別 變數名,而第3個變數的型別前加了static這個關鍵字。類變數也叫靜態變數,也就是在變數前加了static 的變數 類變...