让子类使用子类

时间:2018-03-02 03:57:03

标签: python-3.x subclass

我开发了一个通用Environment类,它在Agent文件中使用通用generic.py类。 现在,我想在SpecificEnvironment文件中创建使用SpecificAgent的{​​{1}}。

到目前为止,我必须使用以下内容指定(具体)specific.py

Environment

如何让from generic import Environment class SpecificEnvironment(Environment): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) 使用SpecificEnvironment子类而不是SpecificAgent

随意提出一些阅读材料,以便我可以自学。 我对面向对象编程比较陌生。

1 个答案:

答案 0 :(得分:1)

您可以使用class属性来指示要使用的Agent子类。

class Environment:
    EnvironmentAgent = Agent

    ...

然后,您需要在类方法中用AgentEnvironment替换self.EnvironmentAgentcls.EnvironmentAgent的每个出现次数。这样,如果为子类提供了不同的EnvironmentAgent属性,则会使用它。

class SpecificEnvironment(Environment):
    EnvironmentAgent = SpecificAgent

    ...