如果我有以下python代码:
class Foo(object):
bar = 1
def bah(self):
print(bar)
f = Foo()
f.bah()
Run Code Online (Sandbox Code Playgroud)
它抱怨
NameError: global name 'bar' is not defined
Run Code Online (Sandbox Code Playgroud)
如何bar在方法中访问类/静态变量bah?
你能解释一下类变量和类属性之间的区别吗?
根据这个网页,类属性是类本身拥有的变量。
例如:
class MP3FileInfo(FileInfo):
"store ID3v1.0 MP3 tags"
tagDataMap = {"title" : ( 3, 33, stripnulls),
"artist" : ( 33, 63, stripnulls),
"album" : ( 63, 93, stripnulls),
"year" : ( 93, 97, stripnulls),
"comment" : ( 97, 126, stripnulls),
"genre" : (127, 128, ord)}
Run Code Online (Sandbox Code Playgroud)
该网页说 tagDataMap 是一个类属性。但是根据Tutorialspoint.com 的说法,“类变量是一个类的所有实例共享的变量。类变量定义在一个类内,但在该类的任何方法之外。”
那么Tutorialspoint.com 所说的class 变量和diveintopython.net 所说的class 属性是一回事吗?我相信这两个术语之间存在差异,我想学习。
谢谢!