python @classmethod @staticmethod

@classmethod隐含参数cls, 主要用在需要创建对象的情况,比如多个构造函数的情况,相当于C++重载
@staticmethod没有隐含参数,主要用在需要创建对象的情况,比如参数验证

class Date(object):

def __init__(self, day=0, month=0, year=0):
    self.day = day
    self.month = month
    self.year = year

@classmethod
def from_string(cls, date_as_string):
    day, month, year = map(int, date_as_string.split('-'))
    date1 = cls(day, month, year)
    return date1

@staticmethod
def is_date_valid(date_as_string):
    day, month, year = map(int, date_as_string.split('-'))
    return day <= 31 and month <= 12 and year <= 3999

date2 = Date.from_string('11-09-2012')
is_date = Date.is_date_valid('11-09-2012')

https://stackoverflow.com/questions/12179271/meaning-of-classmethod-and-staticmethod-for-beginner

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

推荐阅读更多精彩内容

  • 目录 下一章 将比金丝雀 永和宫内,朱拂玉听着济源细细回禀,嘴角泛着冷笑道:“都不是什么省油的灯!且让她们闹去罢...
    横横丨横阅读 1,865评论 0 3
  • 四年前,天气还是这么热。 就在生日当天的凌晨,前任告诉我,很抱歉,欺骗了我。她答应我做的事,还是无法实现,哪怕我已...
    深黑色阅读 1,118评论 0 0
  • 我已经想不起你的脸 我也没有你的照片 时间它杀死了所有的从前 我们也没必要再去怀念
    我想要两颗西柚UUU阅读 708评论 0 0