我有一个类,我想在其中存储同一类的对象的静态引用列表。例如:
class Apple:
NICE_APPLES = [Apple('Elstar', 'Green'), Apple('Braeburn', 'Red'),
Apple('Pink Lady', 'Pink')]
def __init__(self, name, colour):
self.name = name
self.colour = colour
这将导致NameError: name 'Apple' is not defined
错误。
为什么这样不行?你知道吗
我已将代码更改为以下代码,这似乎在控制台上起作用:
class Apple:
NICE_APPLES = []
def __init__(self, name, colour):
self.name = name
self.colour = colour
Apple.NICE_APPLES = [Apple('Elstar', 'Green'), Apple('Braeburn', 'Red'),
Apple('Pink Lady', 'Pink')]
有没有更好的办法?
这在模块内部和外部都有效吗?这是否取决于我导入模块的方式?
在Apple类中将
NICE_APPLES
声明为空列表,然后在__init__()
内部,完成对所有局部变量的赋值后,将self
附加到列表中。你知道吗使用classmethod将apples附加到类列表中。你知道吗
你可以从class方法创建新的class实例,就像这样,我认为这是一个干净的方法,如果你想存储最近创建的obj,除了一个硬连线列表:
相关问题 更多 >
编程相关推荐