3、類方法
例項方法或者叫物件方法,指的是我們在類中定義的普通方法。
只有例項化物件之後才可以使用的方法,該方法的第乙個形參接收的一定是物件本身
(1).格式:在方法上面新增 @staticmethod
(2).引數:靜態方法可以有引數也可以無引數
(3).應用場景:一般用於和類物件以及例項物件無關的**。
(4).使用方式: 類名.類方法名(或者物件名.類方法名)。
定義乙個靜態方法
class game:
@staticmethod
def menu():
print('------')
print('開始[1]')
print('暫停[2]')
print('退出[3]')
game.menu()
無需例項化,可以通過類直接呼叫的方法,但是方法的第乙個引數接收的一定是類本身
(1).在方法上面新增@classmethod
(2).方法的引數為 cls 也可以是其他名稱,但是一般預設為cls
(3).cls 指向 類物件
(5).應用場景:當乙個方法中只涉及到靜態屬性的時候可以使用類方法(類方法用來修改類屬性)。
(5).使用 可以是 物件名.類方法名。或者是 類名.類方法名
class person:
type = '人類'
@classmethod
def test(cls):
print(cls.type)
person.test()
舉例:使用類方法對商品進行統一打折
class goods:
__discount = 1
def __init__(self, name, price):
self.name = name
self.price = price
@classmethod
def change_discount(cls, new_discount):
cls.__discount = new_discount
@property
def finally_price(self):
return self.price * self.__discount
banana = goods('香蕉', 10)
goods.change_discount(0.8)
print(banana.finally_price)
goods.change_discount(0.5)
print(banana.finally_price)
輸出為:
8.0
12.8
5.08.0
python中的例項方法 類方法 靜態方法
class test object a 1 def init self,a self.a a definstance print self print self.a classmethod defclass fun cls print cls.a staticmethod defstatic fun...
Python 中的例項方法 類方法 靜態方法的區別
1 關於引數的區別 例項方法 定義例項方法是最少有乙個形參 例項物件,通常用 self 類方法 定義類方法的時候最少有乙個形參 類物件,通常用 cls 靜態方法 定義靜態方法的時候可以不定義形參 2 關於方法定義時候新增裝飾器的區別 例項方法 不需要新增裝飾器 類方法 需要新增裝飾器 classme...
python中例項方法 類方法 靜態方法的區別
不說廢話,直接上 class test object a a definstance fun self print self.a print self print self.class fun classmethod defclass fun cls print cls.a print cls pr...