自动将类中的所有变量转换为“自”变量

时间:2020-07-12 09:12:58

标签: python class self manim

我的代码(最小示例)如下:

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))

1 个答案:

答案 0 :(得分:1)

您在__init__之外定义的变量与您在__init__内声明的变量完全不具有可比性。第一个属于Class,第二个属于Object

因此,如果您希望a的每个实例更改bcdHello(),则不应在__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()的每个变量的副本。

这是您想要的吗?