Python类继承

问题描述:

新年快乐!Python类继承

我是Python新手,一直在尝试使用类继承。我创建了下面的代码并有几个问题 -

  1. 为什么shDate3的类型为numpy.datetime64而不是SHDate3? shDate似乎是SHDate类型,这是我期待的行为。
  2. 为什么不能创建shDate2?我收到“'一个整数是必需的'”错误...

非常感谢!

from datetime import * 
from numpy import * 

class SHDate(date): 
    def __init__(self, year, month, day): 
     date.__init__(self, year, month, day) 

class SHDate2(date): 
    def __init__(self, dateString): 
     timeStruct = strptime(dateString, "%Y-%m-%d") 
     date.__init__(self, timeStruct.tm_year, timeStruct.tm_mon, timeStruct.tm_mday) 

class SHDate3(datetime64): 
    def __init__(self, dateString): 
     super(SHDate3, self).__init__(dateString) 

if __name__ == '__main__': 
    shDate = SHDate(2010,1,31) 
    print type(shDate) 

    shDate3 = SHDate3("2011-10-11") 
    print shDate3 
    print type(shDate3) 

    shDate2 = SHDate2("2011-10-11") 
    print shDate2 

快速解答:

  1. 确保你知道当你应该使用typeisinstance,它们是不同的。你可能想看看这个question,它澄清了typeisinstance的用法。
  2. 您不应该使用__init__来定制您的date类,因为它是不可变的类。这question提供了一些关于定制这些类的实例的讨论。