嵌套的Python类可以从其封闭类继承吗

问题描述 投票:0回答:1

我检查了几个看起来相似的问题,但没有一个符合我的要求:

Python将封闭类定义为这样的内部类的超类是否合法


class outer:  
    def say_hi():  
        print(hi)

    class inner(outer):  
        def __init__(self):  
            super().__init__()

outer().inner().say_hi()

代码无法运行,因为

class outer
不知道
class inner

可以通过将

class inner
延迟添加到其体外的
class outer
来解决这个问题吗?

我对这种奇怪构造的动机是使继承作为一种子集关系可见,例如猫是一种动物,我想通过使用animal().cat()

使其可见
python inheritance nested
1个回答
0
投票

在外部类之后定义内部类

class Outer:
    def say_hi(self):
        print("hi")

class Inner(Outer):
    def __init__(self):
        super().__init__()

Outer.Inner = Inner

# Usage
outer_instance = Outer() #Add Inner as an attribute of Outer.
inner_instance = outer_instance.Inner() #create an instance of Outer and use the Inner class via the Outer instance.
inner_instance.say_hi()

您分别定义两个类,然后将

Inner
类附加到
Outer
类。这允许您通过
Inner
实例
 创建 
Outer

实例
© www.soinside.com 2019 - 2024. All rights reserved.