Python 类继承 : How to initialize a subclass with values not in the parent class

标签 python class python-2.7 inheritance

我正在努力学习更多关于类和 OOP 的知识。

我怎样才能让我的 Person 类用 Entity 的所有值初始化,但也用 Entity 中可能不包含的值初始化> 类?

例如,PersonSpirit 都继承自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()

最佳答案

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

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

关于Python 类继承 : How to initialize a subclass with values not in the parent class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23452230/

相关文章:

python - 按字母顺序对单元格文本排序

python - 用python或selenium获取css伪元素内容

PHP未分配的类实例?

c# - 如何在 C# 中创建类列表以在循环中迭代

c++ - __device__ 类成员函数更改设备变量的值后从设备复制到主机时出现 cudaMemcpy 错误

python-2.7 - python : How to run multiple commands in one process using popen

python - Django - 不保存在 PostGresql 数据库中

python - Python 中修饰函数和方法之间的行为差​​异

macos - 在 matplotlib Python2 中生成自定义图例(并且仅是图例)

python - Tornado/异步 Web 服务器理论,如何处理长时间运行的操作以利用异步服务器