2014-05-04 122 views
4

我想了解有关类和OOP的更多信息。Python类继承:如何使用不在父类中的值初始化子类

我该如何让我的Person类以Entity的所有值进行初始化,还有一个值可能不包含在Entity类中?例如,和Spirit都从Entity继承。但是,只有Person将具有gender。我怎么能Person初始化与gender以及?

之后,我是否仍然可以创建Person的实例并以我在下面所做的相同方式拨打describe()

class Entity(object): 

    def __init__(self, state, name, age): 
     self.state = state 
     self.name = name 
     self.age = age 

class Person(Entity): 

    def describe(self): 
     print "Identification: %s, %s, %s." % (self.state, self.name, self.age) 

class Spirit(Entity): 
    pass # for now 

steve = Person("human", "Steve", "23" # can I then list gender here?) 
steve.describe() 

回答

6

创建在子类的自定义初始化,然后通过super调用父类的初始化:

class Person(Entity): 
    def __init__(self, state, name, age, gender): 
     self.gender = gender 
     super(Person, self).__init__(state, name, age)