Python classmethod 和 staticmethod 的使用

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

推荐阅读更多精彩内容