2014-10-07 3 views

ответ

1

Вы можете использовать self._member, если это не является атрибутом объекта (в self.__dict__) Я считаю, что это выглядит в классах __dict__ рядом, который должен содержать атрибуты класса.

+0

означает ли это, что если я использую 'method()', я должен отправить экземпляр 'Class' в качестве параметра? – Quaker

+0

нет, просто просто вызовите 'self._member' из любого метода. Я просто указывал, что если вы устанавливаете атрибут для объекта с тем же именем, он будет теневым, потому что он ищет атрибуты объекта перед атрибутами класса – GP89

+0

. Я понял вас отлично, просто, когда я пытаюсь использовать метод() 'из скрипта, который создает экземпляр класса, он говорит мне, что' method() 'принимает два аргумента, и я предоставил только один (мой реальный' метод() 'фактически принимает один метод, а не тот, что и в exapmle) – Quaker

0
class Class: 
    _member = 1 

    def method(self): 
     print "value is ",self._member 

создать экземпляр класса и вызвать метод

c = Class() 
c.method() 

выход:

value is 1 
2
class Class: 
    _member = 1 

    @classmethod 
    def method(cls): 
     print cls._member 

Class.method() 

И:

>>> Class().method() 
1 
>>> 
+0

Кроме того, используя '' 'classmethod''' ** change **, атрибут класса гарантирует, что атрибут не был * переопределен * в экземпляре. – wwii

0
class Class: 
    _member = 1 

    def method(self): 
     print(Class._member) 

Class().method() 

Даст выход:

1 

Это один является атрибутом класса, кстати. Вы можете вызвать метод как связанный метод. У вас есть опция staticmethod (не требуется первый параметр), classmethod (первый параметр - класс) и обычный метод (например, этот).