我检查了几个看起来相似的问题,但没有一个符合我的要求:
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()
使其可见在外部类之后定义内部类
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
实例