我的代码(最小示例)如下:
class Hello:
a=1
b=2
c=3
def __init__(self):
self.d= 4
我正在搜索类似set_all_vars_to_self_vars()
的函数,可以在类Hello
中调用该函数,以便使Hello
类等效于:
class Hello:
def __init__(self):
self.d = 4
self.a = 1
self.b = 2
self.c = 3
有一些功能可以做到吗?
丰富的示例如下:
from manim import *
class Scene1(Scene):
def construct(self):
dot = Dot()
circ= Circle()
self.add(dot,circ)
self.set_variables_as_attrs(dot) # at the moment, variables have to be added manually
return self
class Scene2(Scene):
def construct(self):
sc1 = Scene1.construct(self)
dot2= Dot().next_to(sc1.dot)
self.play(ShowCreation(dot2))
答案 0 :(得分:1)
您在__init__
之外定义的变量与您在__init__
内声明的变量完全不具有可比性。第一个属于Class
,第二个属于Object
。
因此,如果您希望a
的每个实例更改b
,c
,d
和Hello()
,则不应在__init__()
的外部声明它们。 class Hello:
a = 4
b = 4
c = 4
def __init__(self):
d = 4
for attr in dir(self):
if not callable(attr) and not attr.startwith('__'):
self.__dict__.setdefault(attr, Hello.__dict__.get(attr))
的范围。它们根本没有相同的含义。
但是,如果您要执行此操作,请按以下步骤操作:
H = Hello()
然后,使用H.a = Hello.a
,您将拥有Class
。
通常,您将为Instance
的每个Class
获得mavenCentral()
的每个变量的副本。
这是您想要的吗?