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 的使用
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。