靜態方法staticmethod和類方法classmethodapp
1、類方法classmethod函數
class Goods: __discount = 0.8 # 靜態私有屬性 def __init__(self,name,price): self.name = name self.__price = price # price 私有化 @property # 將price方法假裝成屬性,類外直接調用函數,執行私有屬性的一些操做 def price(self): # 不用傳參數 return self.__price * Goods.__discount @classmethod # 把一個方法變成類中的方法,這個方法能夠在類外直接被類調用,而不須要依託任何對象,即不用實例化也能夠 def change_discount(cls,new_discount): # 修改折扣 cls.__discount = new_discount apple = Goods('蘋果',5) # 實例化 print(apple.price) Goods.change_discount(0.5) # 這裏能夠直接用類Goods來調用,不須要依託apple來調用 print(apple.price)
運行結果:spa
4.0 2.5
2、靜態方法staticmetho指針
class Login: def __init__(self,name,password): self.name = name self.pwd = password def login(self): pass @staticmethod def get_usr_pwd(): # 這裏能夠傳參數,可是不是特殊的參數,就一些普通的參數 # 本來是和類和對象都無關的函數方法,可是如今是類中的靜態方法了 usr = input('用戶名: ') pwd = input('密碼: ') Login(usr,pwd) Login.get_usr_pwd() # 使用類直接去調用靜態方法
3、小結code