Вот как я могу придумать (не в верхней части головы), чтобы получить атрибут класса из метода экземпляра:
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()
против 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