# 類方法
class goods:
__discount = 0.8
def __init__(self,name,price):
self.name = name
self.__price = price
@property
def price(self):
return self.__price * goods.__discount
@classmethod # 把乙個方法 變成乙個類中的方法,這個方法就直接可以被類呼叫,不需要依託任何物件
def change_discount(cls,new_discount): # 修改折扣
cls.__discount = new_discount
goods.change_discount(0.5) # goods.change_discount(goods)
# 當這個方法的操作只涉及靜態屬性的時候 就應該使用classmethod來裝飾這個方法
# 靜態方法
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()
# 在完全物件導向的程式中,
# 如果乙個函式 既和物件沒有關係 也和類沒有關係 那麼就用staticmethod將這個函式變成乙個靜態方法
# 類方法和靜態方法 都是類呼叫的
# 物件可以呼叫類方法和靜態方法麼? 可以 一般情況下 推薦用類名呼叫
# 類方法 有乙個預設引數 cls 代表這個類 cls
# 靜態方法 沒有預設的引數 就象函式一樣
類方法,靜態方法
coding utf 8 class test object walk 為普通方法只能被物件instance呼叫,play 為靜態方法可以被物件和classname呼叫,eat為類方法,可以被物件和classname呼叫。此外pep8中一種程式設計風格,self通常用作例項方法的第一引數,cls通常...
類方法,靜態方法
7.靜態方法與類方法 按引數區分 例項方法 定義 第乙個引數必須是例項物件,該引數名一般約定為 self 通過它來傳遞例項的屬性和方法 也可以傳類的屬性和方法 呼叫 只能由例項物件呼叫。靜態方法 定義 使用裝飾器 staticmethod。引數隨意,沒有 self 和 cls 引數,但是方法體中不能...
靜態屬性 類方法 靜態方法
靜態屬性 既可以訪問例項屬性也可以訪問類屬性 self 1 靜態屬性 資料屬性 2 class room 3 def init self,name,owner,width,length,height 4 self.name name 5 self.owner owner 6 self.width w...