classmethod、staticmethod

一、classmethod
class Goods:
    __d = 0.8
    @classmethod   #類方法
    def c_d(cls,new_d):
        cls.__d = new_d   # 把他變成私有變量
    @classmethod
    def get_d(cls):
        return cls.__d
# apple = Goods()       # 不需要實例化
Goods.c_d(0.75)
print(Goods.get_d())          # 0.75
類方法
調用:不需要實例化 直接用類名調用就好
定義:不用接受self參數,默認傳clscls就代表當前方法所在的類
什麼時候用類方法?
需要使用靜態變量 且 不需要和對象相關的任何操作的時候
二、staticmethod
靜態方法:
如果這個方法 既不需要操作靜態變量,也不需要使用對象相關的操作,就使用靜態方法
class A:
    @staticmethod
    def func(name):  #靜態方法
        print(123)
A.func('alex')           # 123
NA:
面向對象編程:
專門爲面向對象編程提供的一個方法——staticmethod
它完全可以當做普通函數去用,只不過這個函數要通過類名.函數名調用
其他 傳參 返回值 完全沒有區別
類裏面,一共可以定義這三種方法:
普通方法 self
類方法 cls
靜態方法
靜態方法和類方法:
都是直接可以使用類名調用,也可以對象調用,但是沒必要實例化在調用。麻煩。
普通方法:對象調用
AI理解理解
class A:
    @staticmethod
    def func1(name):  #靜態方法
        print(123)
    @classmethod
    def func2(cls):  # 靜態方法
        print(123)
    def func3(self):pass
a = A()
print(a.func1)  #靜態方法
print(a.func2)  #類方法 : # 綁定到A類的func
print(a.func3)  #普通方法:# 綁定到A類對象的func
結果:

孫耀威----愛的故事(上集)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章