以下是我能想到的各種方式(離開我的頭頂部)從實例方法獲得班級屬性:
class Ben:
i = 320894
def foo(self):
return self.i, self.__class__.i, Ben.i, Ben.__dict__['i'], getattr(Ben,'i')
print Ben().foo()
個
打印:
(320894, 320894, 320894, 320894, 320894)
注意Ben().foo()
VS Ben.foo(self)
- 你需要奔實例調用foo
和self
之前是在foo
調用作爲實例的方法隱含的。如果你有Ben().foo()
同樣創建的實例b=Ben()
,然後調用b.foo()
self.i
或Ben.i
是最直接的。請記住,這些可以是我的不同。 self.i
是一個實例屬性和Ben.i
是一個類屬性:
class Ben(object):
i = 'class i'
def __init__(self):
self.i='instance i'
def foo(self):
return ('Instance i:',self.i, getattr(self,'i'), self.__dict__['i'],
'Class i:',self.__class__.i, getattr(Ben,'i'), Ben.i, Ben.__dict__['i'])
print Ben().foo()
打印:
('Instance i:', 'instance i', 'instance i', 'instance i',
'Class i:', 'class i', 'class i', 'class i', 'class i')
,應該閱讀[Python的教程](http://docs.python.org/tutorial/)至熟悉Python中的類的基礎知識。 – BrenBarn