Python学习基础笔记六十——静态方法和类方法
method: 方法
staticmethod: 静态的方法
classmethod:类方法
例1:
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
apple = Goods(Apple, 5)
print(apple.price)
Goods.change_discount(0.5)
print(apple.price)
说明:@classmathod 把一个方法变成了类中的方法,这个方法就直接可以被类调用,不需要依托任何类对象。不实例化对象,我们任然可以修改类的值。
当这个方法的操作只涉及静态属性的时候,就应该使用classmethod来装饰这个方法。
例2:
class Staticmethod_Demo():
role = dog
@staticmethod
def func():
print("当普通方法用")
Staticmethod_Demo.func()
在完全面向对象的程序中,如果一个函数,即和对象没有关系,也和类乜有关系,那么就用staticmethod这个函数改变成一个静态方法。在调用这个函数的时候加一个类名。类方法和静态方法都是类调用的。
那么对象可以调用类方法和静态方法么?
可以的。但是一般是推荐类名调用。
类方法有一个默认参数,cls代表这个类,self调用对象。
静态方法没有默认参数,就像函数一样。
