python 面向對象 公有屬性
阿新 • • 發佈:2018-06-11
pre charm pychar .com one most In 本地 name
公有屬性定義 公有屬性也叫作類變量
class role(): # 傳參數 # 公有屬性都在這裏定義 # 在類裏直接定義的屬性即是公有屬性 nationality = ‘JP‘ def __init__(self,name,role,weapon,life_value=100,moneny=15000): # 構造函數 # 實例化過程中做一些類的初始化工作 # 成員屬性 self.name = name self.role = role self.weapon= weapon self.life_value = life_value self.moneny = moneny self.__heart = ‘normal‘ # 私有屬性 def shot(self): # 類的方法,功能(動態屬性) print("shotting") # 定義一個方法用來對外訪問 def show_heart(self): return self.__heart def got_shot(self): print("on,%s got shoot..." % self.name) def buy_gun(self,gun_name): print("%s just bought %s" %(self.name,gun_name)) self.weapon = gun_name b1 = role(‘mike‘,‘警察‘,‘AK47‘) b2 = role(‘mike‘,‘警犬‘,‘B13‘) print(b1.weapon) # AK47 打印的是成員屬性 # b2武器也是成員屬性 # 想讓 b1 b2 共享武器需要公有屬性 print(b1.nationality) # JP print(b2.nationality) # JP
修改公有屬性
class role(): # 傳參數 # 公有屬性都在這裏定義 # 在類裏直接定義的屬性即是公有屬性 nationality = ‘JP‘ def __init__(self,name,role,weapon,life_value=100,moneny=15000): # 構造函數 # 實例化過程中做一些類的初始化工作 # 成員屬性 self.name = name self.role = role self.weapon = weapon self.life_value = life_value self.moneny = moneny self.__heart = ‘normal‘ # 私有屬性 def shot(self): # 類的方法,功能(動態屬性) print("shotting") # 定義一個方法用來對外訪問 def show_heart(self): return self.__heart def got_shot(self): print("on,%s got shoot..." % self.name) def buy_gun(self,gun_name): print("%s just bought %s" %(self.name,gun_name)) self.weapon = gun_name b1 = role(‘mike‘,‘警察‘,‘AK47‘) b2 = role(‘mike‘,‘警犬‘,‘B13‘) print(b1.weapon) # AK47 打印的是成員屬性 # b2武器也是成員屬性 # 想讓 b1 b2 共享武器需要公有屬性 b1.nationality = ‘Thailand‘ print(b1.nationality) # Thailand print(b2.nationality) # JP
更改類的公有屬性
class role(): # 傳參數 # 公有屬性都在這裏定義 # 在類裏直接定義的屬性即是公有屬性 nationality = ‘JP‘ def __init__(self,name,role,weapon,life_value=100,moneny=15000): # 構造函數 # 實例化過程中做一些類的初始化工作 # 成員屬性 self.name = name self.role = role self.weapon = weapon self.life_value = life_value self.moneny = moneny self.__heart = ‘normal‘ # 私有屬性 def shot(self): # 類的方法,功能(動態屬性) print("shotting") # 定義一個方法用來對外訪問 def show_heart(self): return self.__heart def got_shot(self): print("on,%s got shoot..." % self.name) def buy_gun(self,gun_name): print("%s just bought %s" %(self.name,gun_name)) self.weapon = gun_name b1 = role(‘mike‘,‘警察‘,‘AK47‘) b2 = role(‘mike‘,‘警犬‘,‘B13‘) print(b1.weapon) # AK47 打印的是成員屬性 # b2武器也是成員屬性 # 想讓 b1 b2 共享武器需要公有屬性 # 更改類的公有屬性 role.nationality = ‘Thailand‘ # 兩個都改了 print(b1.nationality) # Thailand print(b2.nationality) # Thailand
class role(): # 傳參數 # 公有屬性都在這裏定義 # 在類裏直接定義的屬性即是公有屬性 nationality = ‘JP‘ def __init__(self,name,role,weapon,life_value=100,moneny=15000): # 構造函數 # 實例化過程中做一些類的初始化工作 # 成員屬性 self.name = name self.role = role self.weapon = weapon self.life_value = life_value self.moneny = moneny self.__heart = ‘normal‘ # 私有屬性 def shot(self): # 類的方法,功能(動態屬性) print("shotting") # 定義一個方法用來對外訪問 def show_heart(self): return self.__heart def got_shot(self): print("on,%s got shoot..." % self.name) def buy_gun(self,gun_name): print("%s just bought %s" %(self.name,gun_name)) self.weapon = gun_name b1 = role(‘mike‘,‘警察‘,‘AK47‘) b2 = role(‘mike‘,‘警犬‘,‘B13‘) print(b1.weapon) # AK47 打印的是成員屬性 # b2武器也是成員屬性 # 想讓 b1 b2 共享武器需要公有屬性 # 更改類的公有屬性 role.nationality = ‘Thailand‘ # 兩個都改了 print(b1.nationality) # Thailand print(b2.nationality) # Thailand print("-"*40) b1.nationality = ‘china‘ print(b1.nationality) print(b2.nationality) ‘‘‘ AK47 Thailand Thailand ---------------------------------------- china Thailand ‘‘‘
還沒有實例化之前 就存在定義公有屬性 公有屬性就存在內存裏
公有屬性存在類的內存裏, 可以省內存 不用放在構造函數裏 每次實例化都保存在每個對象內存裏
class role(): # 傳參數 # 公有屬性都在這裏定義 # 在類裏直接定義的屬性即是公有屬性 nationality = ‘JP‘ def __init__(self,name,role,weapon,life_value=100,moneny=15000): # 構造函數 # 實例化過程中做一些類的初始化工作 # 成員屬性 self.name = name self.role = role self.weapon = weapon self.life_value = life_value self.moneny = moneny self.__heart = ‘normal‘ # 私有屬性 def shot(self): # 類的方法,功能(動態屬性) print("shotting") # 定義一個方法用來對外訪問 def show_heart(self): return self.__heart def got_shot(self): print("on,%s got shoot..." % self.name) def buy_gun(self,gun_name): print("%s just bought %s" %(self.name,gun_name)) self.weapon = gun_name print(role.nationality) # JP # b1 = role(‘mike‘,‘警察‘,‘AK47‘) # b2 = role(‘mike‘,‘警犬‘,‘B13‘) # # 更改類的公有屬性 # role.nationality = ‘Thailand‘ # # # 兩個都改了 # print(b1.nationality) # Thailand # print(b2.nationality) # Thailand # # # print("-"*40) # b1.nationality = ‘china‘ # print(b1.nationality) # print(b2.nationality)
class role(): # 傳參數 # 公有屬性都在這裏定義 # 在類裏直接定義的屬性即是公有屬性 nationality = ‘JP‘ def __init__(self,name,role,weapon,life_value=100,moneny=15000): # 構造函數 # 實例化過程中做一些類的初始化工作 # 成員屬性 self.name = name self.role = role self.weapon = weapon self.life_value = life_value self.moneny = moneny self.__heart = ‘normal‘ # 私有屬性 def shot(self): # 類的方法,功能(動態屬性) print("shotting") # 定義一個方法用來對外訪問 def show_heart(self): return self.__heart def got_shot(self): print("on,%s got shoot..." % self.name) def buy_gun(self,gun_name): print("%s just bought %s" %(self.name,gun_name)) self.weapon = gun_name b1 = role(‘mike‘,‘警察‘,‘AK47‘) b2 = role(‘mike‘,‘警犬‘,‘B13‘) # 兩個都改了 print(b1.nationality) print(b2.nationality) # 更改類的公有屬性 role.nationality = ‘china‘ print(b1.nationality, b2.nationality) ‘‘‘ JP JP china china ‘‘‘
class role(): # 傳參數 # 公有屬性都在這裏定義 # 在類裏直接定義的屬性即是公有屬性 nationality = ‘JP‘ def __init__(self,name,role,weapon,life_value=100,moneny=15000): # 構造函數 # 實例化過程中做一些類的初始化工作 # 成員屬性 self.name = name self.role = role self.weapon = weapon self.life_value = life_value self.moneny = moneny self.__heart = ‘normal‘ # 私有屬性 def shot(self): # 類的方法,功能(動態屬性) print("shotting") # 定義一個方法用來對外訪問 def show_heart(self): return self.__heart def got_shot(self): print("on,%s got shoot..." % self.name) def buy_gun(self,gun_name): print("%s just bought %s" %(self.name,gun_name)) self.weapon = gun_name b1 = role(‘mike‘,‘警察‘,‘AK47‘) b2 = role(‘mike‘,‘警犬‘,‘B13‘) # 兩個都改了 print(b1.nationality) print(b2.nationality) # 更改類的公有屬性 role.nationality = ‘china‘ print(b1.nationality, b2.nationality) print("-"*40) b1.nationality = "USA" print(b1.nationality) print(b2.nationality) ‘‘‘ JP JP china china ---------------------------------------- USA china ‘‘‘
在本地創建一個新的 r1.nationality = CN 與Role 沒有半點關系
函數 方法也是公有屬性
class role(): # 傳參數 # 公有屬性都在這裏定義 # 在類裏直接定義的屬性即是公有屬性 nationality = ‘JP‘ def __init__(self,name,role,weapon,life_value=100,moneny=15000): # 構造函數 # 實例化過程中做一些類的初始化工作 # 成員屬性 self.name = name self.role = role self.weapon = weapon self.life_value = life_value self.moneny = moneny self.__heart = ‘normal‘ # 私有屬性 # 這裏的函數 方法 也是公有屬性 def shot(self): # 類的方法,功能(動態屬性) print("shotting") # 定義一個方法用來對外訪問 def show_heart(self): return self.__heart def got_shot(self): print("on,%s got shoot..." % self.name) def buy_gun(self,gun_name): print("%s just bought %s" %(self.name,gun_name)) self.weapon = gun_name b1 = role(‘mike‘,‘警察‘,‘AK47‘) b2 = role(‘mike‘,‘警犬‘,‘B13‘) def shot2(self): print("my shot",self.name) b1.shot = shot2 b1.shot(b1) # 需要手動傳參數 b2.shot() # 用原來對象方法 ‘‘‘ my shot mike shotting ‘‘‘
python 公有屬性可以用類訪問,也可以用對象訪問
公有屬性只能用類去訪問
class po: country = "中國" def __init__(self, name): self.name = name s1 = po("河南") # python 公有屬性可以用類訪問,也可以用對象訪問 print(po.country) print(s1.country) ‘‘‘ 中國 中國 ‘‘‘
私有公有屬性 對外不能訪問
class Foo(object): __name = "mike" print(Foo.__name) ‘‘‘ Traceback (most recent call last): File "C:/Users/Administrator.QH-20170325TNQR/PycharmProjects/SSSSS/SS/day7/S13 面向對象/私有公有屬性 .py", line 11, in <module> print(Foo.__name) AttributeError: type object ‘Foo‘ has no attribute ‘__name‘ ‘‘‘
在內部普通方法可以訪問
class Foo(object): __name = "mike" def __init__(self, name): self.name = name def f1(self): print(Foo.__name) obj = Foo("jack") obj.f1() # mike
使用靜態方法 不創建對象
class Foo(object): __name = "mike" def __init__(self, name): self.name = name @staticmethod def f1(): print(Foo.__name) Foo.f1() # mike
python 面向對象 公有屬性