zoukankan      html  css  js  c++  java
  • 面向对象之静态方法与类方法的区别

    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>
  • 相关阅读:
    HDU 1333 基础数论 暴力
    HDU 1299 基础数论 分解
    HDU 1211 EXGCD
    HDU 3507 单调队列 斜率优化
    博弈
    std:ios::sync_with_stdio(false);
    NBUT[1220] SPY
    nbut1217 Dinner
    poj2236Wireless Network
    ZOJ Problem Set
  • 原文地址:https://www.cnblogs.com/happyfei/p/9613300.html
Copyright © 2011-2022 走看看