一、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參數,默認傳cls,cls就代表當前方法所在的類
什麼時候用類方法?
需要使用靜態變量 且 不需要和對象相關的任何操作的時候
二、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
結果:
孫耀威----愛的故事(上集)