@classmethod #把一个方法变成类的方法,不需要依托对象,可以直接被类调用,默认传入cls参数
def change_discount(cls,new_discount):
cls.__discount = new_discount
Goods.change_discount(0.5)
#当这个方法的操作只涉及静态属性的时候应该用classmethod装饰这个方法
##########################################
class Login:
def __init__(self,name,pwd)
self.name = name
self.pwd = pwd
def login(self):pass
@staticmethod
def get_usr_pwd(): #静态方法
usr = input('用户名:')
pwd = input('密码:')
Login(usr,pwd)
在完全面向对象程序中
如果一个函数,既和对象没关系,也和类没关系,那么就用staticmethod把这个函数变成一个静态方法
类方法和静态方法都是类调用的
对象可以调用类方法和静态方法,但是一般推荐用类名调用
类方法有默认参数cls代表这个类(class缩写),类比self代表对象
静态方法没有默认参数,就像函数一样