我想创建一个包含彩色符号集合的类,我希望它像一个静态变量。但我无法从class属性中调用@classmethod,即以下内容给出了错误(NameError: name 'Pegs' is not defined
):
class Color:
RED = '\033[31m'
class Pegs:
PEG = '\u25A0'
PEGS = {
'red' : Pegs.generate_peg_from_color(Color.RED)
}
@classmethod
def generate_peg_from_color(cls, color):
return ''.join([color, Pegs.PEG])
是否可以在类属性中调用函数?我应该使用静态方法装饰器而不是类方法吗?为什么会产生这个错误?
答案 0 :(得分:0)
class Pegs:
PEG = '\u25A0'
@classmethod
def generate_peg_from_color(cls, color):
return ''.join([color, cls.PEG])
PEGS = {
'red' : Pegs.generate_peg_from_color(Color.RED)
}
你试图在定义之前调用函数。现在你可以尝试一下:
In [11]: Pegs.PEGS
Out[11]: {'red': '\x1b[31m■'}
<强> UPDATE ^ 强>
如果您要添加此类方法该怎么办:
@classmethod
def meth(cls):
cls.PEGS = {
'red': cls.generate_peg_from_color(Color.RED)
}
之后达到你的班级属性?这会解决你的问题吗?