類方法和靜態方法(python3.6)
阿新 • • 發佈:2018-12-22
靜態方法和類方法都可以通過類和物件呼叫
class statics_test(): def __init__(self): self.class_variable=7#物件變數 class_variable=6#類變數和物件變數同名 @staticmethod def static_func(a,b): print(a+b) print(statics_test.class_variable)#靜態方法可以根據類名訪問類變數 @classmethod def class_func(cls,a,b): print(a+b) print(cls.class_variable)#類方法可以用cls訪問類變數 def tes(self): print('normal func') print(self.class_variable)#普通法可以用self訪問類變數,如果有同名的物件變數,只能取到物件變數 class child_class(statics_test): def tes(self): print('normal function') if __name__=='__main__': statics_test.static_func(1,2) #通過類呼叫靜態方法 statics_test.class_func(1,2) #通過類呼叫類方法 ob = statics_test() ob.class_func(1,2)#通過物件呼叫類方法 ob.static_func(1,2)#通過物件呼叫靜態方法 ob.tes() child_class.class_func(1,2)#類方法可以繼承 child_class.static_func(1,2)#靜態方法可以繼承 print(child_class.class_variable)#類變數可以繼承 ob2 = child_class() print(ob2.class_variable)#物件變數可以繼承
沒搞清楚,類函式和靜態函式到底有什麼不同,我沒發現他們倆有彼此不能做的事情,有高人指點嗎?