我有以下python类:
class list_stuff:
A = 'a'
B = 'b'
C = 'c'
stufflist = [v for k,v in list_stuff.__dict__.items() if not k.startswith("__")]
但是它显示了NameError,表示未定义的变量list_stuff
。
根据this,它应该有用。
我也尝试过:
list_stuff().__dict__.items()
但仍然是同样的错误。我在这里缺少什么?
答案 0 :(得分:1)
在Python中,您无法在类体中引用该类。
我在这里看到的问题是你指的是类定义中的类list_stuff
。要解决这个问题,只需在课堂外移动该行:
class list_stuff:
A = 'a'
B = 'b'
C = 'c'
stufflist = [v for k,v in list_stuff.__dict__.items() if not k.startswith("__")]
答案 1 :(得分:1)
我最终这样做了:
class list_stuff:
A = 'a'
B = 'b'
C = 'c'
@classmethod
def stufflist(cls):
return [v for k,v in cls.list_stuff.__dict__.items() if not k.startswith("__")]
与我原意的效果相同。
感谢大家的快速回复。
答案 2 :(得分:0)
问题似乎是缩进,因为你实际上是从内部调用类。
试试这个:
render(){
return (
<div>
<button type="button">Get Random Memory</button>
<h1>Memory App</h1>
{ this.state.memory ? <MemoryImage memory={this.state.memory}/> : '' }
{ this.state.memory ? <MemoryText memory={this.state.memory}/> : '' }
</div>
);
}
答案 3 :(得分:0)
您可以创建一个生成所需列表属性的方法。首先,在运行get_list()
方法之前,您需要生成该类的实例。
class list_stuff():
A = 'a'
B = 'b'
C = 'c'
def get_list(self):
self.thelist = [v for k,v in list_stuff.__dict__.items() if not k.startswith("__")]
return self.thelist
list_a = list_stuff()
print list_a.get_list()
print list_a.thelistenter code here
这就是它的回报:
['a', 'b', 'c', <function get_list at 0x7f07d6c63668>]
['a', 'b', 'c', <function get_list at 0x7f07d6c63668>]