標籤:執行 pytho 四種 delattr 就是 代碼 建立對象 name 執行個體化
今日內容:
1.屬性
2. 類方法
3.靜態方法
4.反射
1. 屬性
是指調用類中的函數,就像調用對象屬性值一樣調用.更權威解釋:將方法 偽裝 成屬性,雖然在代碼層面上沒有任何高深之處,但是讓其看起來更合理.
樣本:
class A: def __init__(self,*args): self.name = args[0] self.height = args[1] self.weight = args[2] @property def bmi(self): return self.height /self.weight**2a1 = A("leon",1.72,60)print(a1.bmi)
注意,這裡是通過加@property 這個裝飾器來實現的,
即然是屬性,那麼也可以修改的,關於修改和刪除,是通過下面方法實現的,
樣本:
class B: def __init__(self,*args): self.name = args[0] self.__pwd = args[1] @property def pwd(self): return self.__pwd @pwd.setter #注意這裡的裝飾器名字和上面的函數名一致,以及下面的函數都是一致的,下面賦值會傳入這個new_pwd裡面 def pwd(self,new_pwd): self.__pwd = new_pwdobj1 = B("leon","hao123")obj1.pwd = 123456print(obj1.pwd)
屬性的刪除操作樣本:
class B: def __init__(self,*args): self.name = args[0] self.__pwd = args[1] @property def pwd(self): return self.__pwd @pwd.setter #注意這裡的裝飾器名字和上面的函數名一致,以及下面的函數都是一致的,下面賦值會傳入這個new_pwd裡面 def pwd(self,new_pwd): self.__pwd = new_pwd @pwd.deleter def pwd(self): del self.__pwdobj1 = B("leon","hao123")obj1.pwd = 123456print(obj1.pwd)del obj1.pwdprint(obj1.pwd)
具體操作流程如下:
# 第一步,對屬性進行改操作,自動執行 被這個@pwd.setter裝飾器裝飾的方法
# 第二步,將新值傳給這個被@pwd.setter裝飾器裝飾的方法裡面,當做參數.
2. 類方法,靜態方法
類方法:類名去調用類方法,自動將類的空間傳給類方法中的cls..對象如果調用類方法,自動將類空間傳給類中的cls
樣本:
class C: num = 1 def __init__(self,*args): self.name = args[0] self.age = args[1] @classmethod def class_fun(cls): print(cls.num)c1 = C("leon",18)c1.class_fun()
什麼情況下使用類方法?
直接讓類去操作類中的方法,沒有必要建立對象在操作的時候,用類方法.
3. 靜態方法
靜態方法:在類中定義一個靜態方法,無需傳入你的類空間,對象空間,可以當成普通函數去用.(也就是不用再傳入self的,也就是類中的獨立函數)
樣本:
class D: def __init__(self): pass @staticmethod def fun(a,b): return a + bd1 = D()print(d1.fun(2,3))
4.反射(非常非常重要,)
反射:通過 字串 操作一個空間 (對象).
總共有四個方法:
1.getattr()
2.hasattr()
3.setattr()
4.delattr()
四種情境的不同使用方法:
1,執行個體化一個對象去研究
python學習第二十二章