【发布时间】:2018-09-29 08:00:14
【问题描述】:
我的 Parent 类有一只猫和一只狗,我需要狗来执行 cat 类中的一个函数。
另外,cat 和 dog 需要是父类中的内部嵌套类。
我读到 dog 需要使用 super() 调用父类,然后使用他的 cat 实例。但它不起作用。
我得到了错误
TypeError: super(type, obj): obj must be an instance or subtype of type
_
Animal = Parent()
Animal.ThisDog.BarkToCat()
class Parent(object):
def __init__(self, *args, **kwargs):
self.ThisCat = self.cat()
self.ThisDog = self.dog()
class cat(object):
def barked(self):
return ("I better run!")
class dog(object):
def BarkToCat(self):
print(super(Parent,self).ThisCat.barked())
我不会写狗(父母)
class dog(Parent):
def BarkToCat(self):
print(super(Parent,self).ThisCat.barked())
...因为我得到了错误
NameError: name 'Parent' is not defined
我迷路了。这是如何在 Python 中完成的?
【问题讨论】:
-
为什么你认为
cat和dog需要嵌套类?看起来您误解了所有 3 个嵌套类、子类和super。 -
我需要这里接受的答案stackoverflow.com/questions/719705/…
-
明确 cat 只存在于 Parent 内部。它是在 Parent 中使用的东西
-
@user2357112 如果多年以后再读这段代码,我会立刻明白猫和狗与Parent有关。任何人都会很快理解它是如何工作的。它使代码可维护。
-
您正在尝试编写 Python,就好像它是 Java 一样,好像内部类自动引用了外部类,并且好像
super(Parent, self)是 Java 的OuterClass.this。 Python 不是 Java,在 Java 中有意义的模式在 Python 中没有意义。
标签: python-3.x