classA在Python中没有属性“camera”错误
我正在使用一个包含大量文件和类的大型Python库。我试图创建自己的类以防止代码重复。下面是所有课程的基本概述classA在Python中没有属性“camera”错误,python,python-3.x,oop,inheritance,manim,Python,Python 3.x,Oop,Inheritance,Manim,我正在使用一个包含大量文件和类的大型Python库。我试图创建自己的类以防止代码重复。下面是所有课程的基本概述 # The Scene Class class Scene(Container): def __init__(self, **kwargs): Container.__init__(self, **kwargs) // Set some attribute values including... self.camera = se
# The Scene Class
class Scene(Container):
def __init__(self, **kwargs):
Container.__init__(self, **kwargs)
// Set some attribute values including...
self.camera = self.camera_class(**self.camera_config)
# The Camera Class
class MovingCamera(Camera):
def __init__(self, frame=None, **kwargs):
// Set up values some values and then...
Camera.__init__(self, **kwargs)
# The MovingCameraScene Class
from manimlib.camera.moving_camera import MovingCamera
from manimlib.scene.scene import Scene
class MovingCameraScene(Scene):
CONFIG = {
"camera_class": MovingCamera
}
def setup(self):
Scene.setup(self)
assert(isinstance(self.camera, MovingCamera))
self.camera_frame = self.camera.frame
return self
// More code. There is no __init()__ method in this class.
# My Custom Class the Inherits MovingCamera Scene
class Something(MovingCameraScene):
CONFIG = {
"alpha": "beta"
}
def __init__(self, **kwargs):
self.texts = []
def common_method(self):
texts = self.texts
for i in texts:
// Manipulates Boxes
# My Final Class that Inherits Previous Class
class classA(Something):
CONFIG={
"opt_a": "opt_b"
}
def construct(self):
texts = self.texts
texts.append('Apple')
.
.
.
.
self.common_method()
# This is another class that inherits `MovingCameraScene`
class classB(MovingCameraScene):
CONFIG={
"opt_a": "opt_b"
}
def construct(self):
texts = []
texts.append('Apple')
.
.
.
.
// More code that was in `common_method` of `Something` but directly pasted here.
还有很多课程,但希望这足够了
当我尝试使用自己的类(Something
)作为classA
)的父类时,出现以下错误:
'classA' object has no attribute 'camera'
使用直接继承自
MovingCameraScene
的classB
时,我没有遇到此错误。您没有在某物中调用超级构造函数:
class某物(移动摄影机场景):
配置={
“α”:“β”
}
定义初始(自我,**kwargs):
超级()
self.text=[]
您不能在某物中调用超级构造函数:
class某物(移动摄影机场景):
配置={
“α”:“β”
}
定义初始(自我,**kwargs):
超级()
self.text=[]
请用完整的错误回溯更新您的问题。有些东西。
需要调用父类\uuuuu init\uuuu()
谢谢@TomDalton,但是MovingCameraScene
中没有\uuuu init\uuuu()
)这很好-将隐式调用MovingCameraScene
的父级的\uuuuuuuuuuuuuuu
。请使用完整的错误回溯更新您的问题。Something.\uuuuuuuuuuuu()
需要调用父级\uuuuuuuuuuuuuuuuuuuuuuuuu()
谢谢@TomDalton,但没有\uuuuuuuuuuuuuuuuuuuuuuuuuu())
在移动摄像机场景中这很好-将隐式调用MovingCameraScene
的父级的\uuuu init\uuuu
。谢谢@qumarana.)我有两个问题。1. MovingCameraScene
没有\uuuu init()函数。它如何在不调用自己的超级构造函数的情况下工作?2.为什么classB
也继承了MovingCameraScene
,但不在任何地方调用\uuuu init()\uuuuu
。所有\uu init\uuuuu()
方法都只是普通方法,可以被派生类重写,但如果不是,它们就是继承的。上面看到的super()。\uuuuu init\uuuuu()
在继承树中向上调用下一个\uuuuuuuu init()
。因此移动摄影机场景
从摄影机
继承\uuuuuuuu init()。并正常工作。classB也没有定义自己的\uuuu init()\uuuu
函数,因此它也继承自己的函数以正常工作。但是,我已经为classA
定义了我自己的\uuuuuu init()\uuuu
,所以它被重写了,我需要调用它的超级构造函数的\uuuuu init()\uuuuuu
,以使它正常工作。谢谢@quamrana。我理解正确了吗?我想是的,但是你的帖子显示,无论是classA
,还是classB
都没有自己的\uuuuu init\uuuuuu()
。谢谢@qumarana.)我有两个问题。1. MovingCameraScene
没有\uuuu init()函数。它如何在不调用自己的超级构造函数的情况下工作?2.为什么classB
也继承了MovingCameraScene
,但不在任何地方调用\uuuu init()\uuuuu
。所有\uu init\uuuuu()
方法都只是普通方法,可以被派生类重写,但如果不是,它们就是继承的。上面看到的super()。\uuuuu init\uuuuu()
在继承树中向上调用下一个\uuuuuuuu init()
。因此移动摄影机场景
从摄影机
继承\uuuuuuuu init()。并正常工作。classB也没有定义自己的\uuuu init()\uuuu
函数,因此它也继承自己的函数以正常工作。但是,我已经为classA
定义了我自己的\uuuuuu init()\uuuu
,所以它被重写了,我需要调用它的超级构造函数的\uuuuu init()\uuuuuu
,以使它正常工作。谢谢@quamrana。我理解对了吗?我想是的,但是你的帖子显示,无论是classA
,还是classB
都没有自己的\uuuuu init\uuuuu()
。