from datetime import date
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# 类本身的方法,和类的实例无关,可以理解绑定了类。
# 重构类的时候不必要修改构造函数,只需要额外添加你要处理的函数。
@classmethod
def date_of_birth(cls, name, year):
"""
根据出生年份计算出年龄
"""
return cls(name, date.today().year - year)
# 静态方法无绑定, 没有默认输入参数,类和类实例也可以直接调用,相当于一个普通的函数。
@staticmethod
def isAdult(age):
"""
判断是否成年
"""
if age > 18:
return 'Adult'
else:
return 'Minor'
if __name__ == '__main__':
man1 = Person.date_of_birth('Tony', 2000)
man2 = Person('Alex', 19)
print(man1.age) #19
print(man2.age) #19
print(Person.isAdult(10)) #'Minor'
print(man1.isAdult(21)) #'Adult'
Python classmethod 和 staticmethod 的使用
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...