舉一個例子簡單介紹類中的成員方法的調用方式
# ### 類中的成員方法怎么調用 class MyClass1: def func1(self): print(">> func1") def func2(cls): print(">> func2") def func3(self): print("------------func3開始------------") # self是類中的萬能對象,在類中使用self調用類自己的成員方法時,不需要額外傳參self或cls,可直接調用 self.func1() self.func2() self.func5() self.func6() MyClass1.func1(self) MyClass1.func2(MyClass1) # self.func4() # 這里會自動傳參類對象self,但是func4不接受任何參數,所以會報錯 MyClass1.func4() print("------------func3結束------------") def func4(): # 這樣寫其實不合乎規范,因為對象是沒法調用這個方法的,但是運行時不會報錯 print(">> func4") @staticmethod # 靜態方法裝飾器 def func5(): print("靜態方法>> func5") @classmethod # 綁定類方法裝飾器 def func6(cls): print("綁定到類的方法>> func6") # 實例化類對象 obj1 = MyClass1() # 兩種方式調用func1函數, obj1.func1() # 對象調用func1,自動傳參obj1類對象 MyClass1.func1(obj1) # 類調用func1,需要手動傳參obj1類對象 # 查看類中的調用 obj1.func3() MyClass1.func2(MyClass1) # 類調用func2,需要手動傳參MyClass1類 # obj1.func4() # 對象調用func4,自動傳參obj1類對象,但是func4不接受任何參數,所以會報錯,所以對象是沒法直接調用func4函數的 MyClass1.func4() # 類調用func4,原本沒有參數,不需要傳參 """調用靜態方法,用類或對象調用都不需要傳參,定義靜態方法時也不要有self和cls參數,就像模塊方法一樣直接調用""" MyClass1.func5() obj1.func5() """用類調用調用綁定類方法會自動傳參MyClass1類,定義綁定類方法時需要有參數cls""" MyClass1.func6() obj1.func6() # 對象也可以調用,會自動傳參MyClass1類,不用額外傳參 # 打印結果 """ >> func1 >> func1 ------------func3開始------------ >> func1 >> func2 靜態方法>> func5 綁定到類的方法>> func6 >> func1 >> func2 >> func4 ------------func3結束------------ >> func2 >> func4 靜態方法>> func5 靜態方法>> func5 綁定到類的方法>> func6 綁定到類的方法>> func6 """
# 調用類中的成員屬性就簡單很多了,直接調用不用考慮傳參