類方法 靜態方法

2021-09-12 09:30:47 字數 1067 閱讀 4838

# 類方法

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...