#staticmathis 静态方法
#classmethod 类方法。当这个方法的操作只涉及静态属性的时候,就应该用classmethod来装饰这个方
#类的操作行为
class Goods:
__discount = 0.8
@property
def __init__(self, name, price):
self.name = name
self.__price = price #回双下划线,变为私有属性
def price(self):
return self.__price *Goods.discount
@classmethod #change_discount变为类里的方法
def change_discount(cls, new_discount):
#cls为类方法默认参数.指Goods类,直接可以被调用,不用依托任何对象
cls.__discount = new_discount
Golds.change_discount(0.5)
class login:
def __init_(self, name, password):
self.name = name
self.password = password
def login(self):
pass
@staticmethod #转为静态方法
def get_user_pwd():
user = input('用户名')
pwd = input('密码')
Login(user, pwd)
Login.get_user_pwd() #调用静态方法get_user_pwd。在完全面向对象的程序中,如果一个函数既和对象没有关系也和类没有关系,就用staticmethod将这个其变成一个静态方法
#类方法和静态方法都是通过类名调用
#对象也可以调用类方法和静态方法,一般推荐类名调用
#类方法有一个默认参数 cls 代表这个类
#静态方法没有默认参数,就象函数一样