類包含下列
靜态屬性
動态屬性
靜态方法
動态方法
class Province:
#靜态字段--屬于類,調用方法類.字段名
memo = "中國23個省之一"
#動态字段--屬于對象,調用方式執行個體化對象.字段名
def __init__(self, name, capital, leader):
self.Name = name
self.Capital = capital
self.Leader = leader
#動态方法--屬于對象
def sports_game(self):
print(self.Name + '正在開運動會')
#靜态方法--屬于類
@staticmethod
def Foo(): #去掉self參數, 靜态方法屬于類
print('每個省要帶頭反腐')
@property #把方法變成一個特性
def Bar(self):
print(self.Name)
return 'something'
hb = Province('河北','石家莊','李陽') #hb = 類定義中self參數
sd = Province('山東','濟南','王盛輝')
print(hb.Capital)
print(hb.memo) #動态的對象可以通路靜态類的靜态字段
# print(Province.Name) #靜态類不可以通路動态字段,name,capital,leader為動态字段
print(Province.memo)
hb.sports_game() #對象可以通路動态方法
sd.sports_game()
Province.Foo() #靜态類可以通路靜态方法
hb.Foo() #動态對象可以通路靜态方法
#通路特性
hb.Bar #無需括号, 把方法通路形式轉變為字段通路形式
print(hb.Bar)
>>>>>>>>>
石家莊
中國23個省之一
中國23個省之一
河北正在開運動會
山東正在開運動會
每個省要帶頭反腐
每個省要帶頭反腐
河北
河北
something
私有字段,私有方法-- __變量名
class Province:
#靜态字段--屬于類,調用方法類.字段名
memo = "中國23個省之一"
#動态字段--屬于對象,調用方式執行個體化對象.字段名
def __init__(self, name, capital, leader,flag):
self.Name = name
self.Capital = capital
self.Leader = leader
#定義私有字段,__變量名
self.__Thailand = flag
#動态方法--屬于對象
def sports_game(self):
print(self.Name + '正在開運動會')
#靜态方法--屬于類
@staticmethod
def Foo(): #去掉self參數, 靜态方法屬于類
print('每個省要帶頭反腐')
@property #把方法變成一個特性
def Bar(self):
print(self.Name)
return 'something'
#間接調用私有變量
def show(self):
print(self.__Thailand)
#構造一個Thailand函數,傳回類中的私有變量__Thailand
@property#構造函數
def Thailand(self):
return self.__Thailand
#定義私有方法
def __sha(self):
print('我是Alex')
#類中可以通路私有方法
def Foo2(self):
self.__sha()
japan = Province('日本','濟南','王盛輝',True)
# print(japan.__Thailand) #出錯,私有變量不可通路
japan.show()
japan.Foo2()
print(japan.Thailand)
japan._Province__sha() #可以通過_Province__sha()顯式調用私有變量,但不建議
>>>
True
我是Alex
True
修改私有屬性的方法-Setter
class Province(object): #使用構造函數setter時候需要繼承object
#靜态字段--屬于類,調用方法類.字段名
memo = "中國23個省之一"
#動态字段--屬于對象,調用方式執行個體化對象.字段名
def __init__(self, name, capital, leader,flag):
self.Name = name
self.Capital = capital
self.Leader = leader
#定義私有字段,__變量名
self.__Thailand = flag
#動态方法--屬于對象
def sports_game(self):
print(self.Name + '正在開運動會')
#靜态方法--屬于類
@staticmethod
def Foo(): #去掉self參數, 靜态方法屬于類
print('每個省要帶頭反腐')
@property #把方法變成一個特性
def Bar(self):
print(self.Name)
return 'something'
#間接調用私有變量
def show(self):
print(self.__Thailand)
#構造一個Thailand函數,傳回類中的私有變量__Thailand
@property#構造函數,隻讀
def Thailand(self):
return self.__Thailand
#推薦修改私有變量的方法
@Thailand.setter#構造函數, 可以修改@函數名.setter(self,傳個值)
def Thailand(self,value):
self.__Thailand = value
#定義私有方法
def __sha(self):
print('我是Alex')
#類中可以通路私有方法
def Foo2(self):
self.__sha()
japan = Province('日本','濟南','王盛輝',True)
print(japan.Thailand)
japan.Thailand = False
print(japan.Thailand)