我有下一个代码:
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
访问键“ 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
指向该对象,然后使用键“垃圾邮件”获取其值“ 25”。
为了使RO成为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 - 将Dict作为类中的局部变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60426127/