python學習第二十二章
阿新 • • 發佈:2018-07-03
代碼 pass per 實現 以及 自動 clas 字符串 def
今日內容:
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**2 a1= 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_pwd obj1 = B("leon","hao123") obj1.pwd = 123456 print(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.__pwd obj1 = B("leon","hao123") obj1.pwd = 123456 print(obj1.pwd) del obj1.pwd print(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 + b d1 = D() print(d1.fun(2,3))
4.反射(非常非常重要,)
反射:通過 字符串 操作一個空間 (對象).
總共有四個方法:
1.getattr()
2.hasattr()
3.setattr()
4.delattr()
四種場景的不同使用方法:
1,實例化一個對象去研究
python學習第二十二章