gpt4 book ai didi

python - 字典作为类中的局部变量

转载 作者:太空宇宙 更新时间:2023-11-03 19:41:01 26 4
gpt4 key购买 nike

我有下一个代码:

class PythagoreanProof(Scene):
CONFIG={
"color_triangulos":YELLOW,
"color_rect_c":RED,
"color_rect_b":ORANGE,
"color_rect_a":ORANGE,
"color_cuadrado_c":ORANGE,
"opacidad_triangulos":0.6,
"opacidad_cuadradro_a":0.6,
"opacidad_cuadradro_b":0.6,
"opacidad_cuadradro_c":0.6,
"grosor_lineas":1,
"l_a":5/5,
"l_b":12/5,
"l_c":13/5,
}
def construct(self):
self.wait()
self.pre_cuadrado()
self.pos_cuadrado()
self.tran_pre_pos_cuadrado()
self.wait()

def pre_cuadrado(self):
cuadro=Square(side_length=self.l_a+self.l_b)

如你所见,我可以通过self.l_a访问 key “l_a”

但是在这个更简单的代码中我收到以下错误

class Example():
CONFIG = {'spam':25}

def __init__(self, value):
self.data = value

def display(self):
print(self.data, self.spam)

x=Example(2)
x.display()

AttributeError: 'Example' object has no attribute 'spam'

为什么它在第一个示例中有效?它实际上是如何工作的?

谢谢!

最佳答案

至于为什么当Scene继承到类PythagoreanProof时才有效,需要看一下Scene的代码才能明白它实际上在做什么。

在类Example中,您已将CONFIG定义为类级别对象。您的方法 display 需要使用 self.CONFIG 指向该对象,然后使用键“spam”获取其值“25”。

为了在 CONFIG 属性中创建键,您可以使用 @poperty 包装器。

请参阅下面的示例

class Example():
CONFIG = {'spam': 25}

def __init__(self, value):
self.data = value

def display(self):
print(self.data, self.CONFIG['spam'])

@property
def spam(self):
return self.CONFIG['spam']

x = Example(2)
x.display()
print(x.spam)
2 25
25

请注意,你们中的一些身份不正确。方法 display 不应该是 __init__ 下的函数,而是类 Example 下的方法。

关于python - 字典作为类中的局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60426127/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com