面向对象之静态方法与类方法的区别

import time
class Date:
    def __init__(self,year,month,day):
        self.year=year
        self.month=month
        self.day=day
    @classmethod#哪个类来调用,就把这个类传入第一个参数cls,对象就是由此类产生的
    def now(cls):
        t=time.localtime()
        return cls(t.tm_year,t.tm_mon,t.tm_mday)
    @staticmethod#无论哪个类来调用,都是由父类产生的
    def now_sta():
        t=time.localtime()
        return Date(t.tm_year,t.tm_mon,t.tm_mday)


class EuroDate(Date):
    def __str__(self):
        return 'year: %s  month: %s  day: %s '%(self.year,self.month,self.day)

#
d1=EuroDate.now()#结果触发了__str__函数,说明这个对象是由类自己实例化的
print(d1)#year: 2018  month: 9  day: 9

d2=EuroDate.now_sta()#结果是父类实例化的对象,说明是父类实例化的对象
print(d2)#<__main__.Date object at 0x000001F5E191F0B8>

 

转载于:https://www.cnblogs.com/happyfei/p/9613300.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值