美文网首页
Python classmethod 和 staticmeth

Python classmethod 和 staticmeth

作者: Mr_K_K | 来源:发表于2019-04-22 19:08 被阅读0次
    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 和 staticmeth

          本文链接:https://www.haomeiwen.com/subject/njuugqtx.html