class Class:
_member = 1
def method(self):
Я хочу получить _member
от method()
, что это правильный способ сделать это?Как я могу получить доступ к элементу данных класса из метода внутри одного класса?
class Class:
_member = 1
def method(self):
Я хочу получить _member
от method()
, что это правильный способ сделать это?Как я могу получить доступ к элементу данных класса из метода внутри одного класса?
Вы можете использовать self._member
, если это не является атрибутом объекта (в self.__dict__
) Я считаю, что это выглядит в классах __dict__
рядом, который должен содержать атрибуты класса.
class Class:
_member = 1
def method(self):
print "value is ",self._member
создать экземпляр класса и вызвать метод
c = Class()
c.method()
выход:
value is 1
class Class:
_member = 1
@classmethod
def method(cls):
print cls._member
Class.method()
И:
>>> Class().method()
1
>>>
Кроме того, используя '' 'classmethod''' ** change **, атрибут класса гарантирует, что атрибут не был * переопределен * в экземпляре. – wwii
class Class:
_member = 1
def method(self):
print(Class._member)
Class().method()
Даст выход:
1
Это один является атрибутом класса, кстати. Вы можете вызвать метод как связанный метод. У вас есть опция staticmethod (не требуется первый параметр), classmethod (первый параметр - класс) и обычный метод (например, этот).
означает ли это, что если я использую 'method()', я должен отправить экземпляр 'Class' в качестве параметра? – Quaker
нет, просто просто вызовите 'self._member' из любого метода. Я просто указывал, что если вы устанавливаете атрибут для объекта с тем же именем, он будет теневым, потому что он ищет атрибуты объекта перед атрибутами класса – GP89
. Я понял вас отлично, просто, когда я пытаюсь использовать метод() 'из скрипта, который создает экземпляр класса, он говорит мне, что' method() 'принимает два аргумента, и я предоставил только один (мой реальный' метод() 'фактически принимает один метод, а не тот, что и в exapmle) – Quaker