1. 程式人生 > >python學習第二十二章

python學習第二十二章

代碼 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學習第二十二章