При написании метода экземпляра для класса в Python-, который выглядит точно так же как то, что вы только закодированный вверх - вы не можете избежать использования self
. Первым параметром метода экземпляра в Python всегда является объект, на который вызывается метод. self
- это не зарезервированное слово в Python - просто традиционное имя для этого первого параметра.
Цитата из official Python tutorial, chapter 9:
[...] специальная вещь о методах является то, что объект передается в качестве первого аргумента функции. В нашем примере вызов x.f() в точности эквивалентен MyClass.f (x). В общем случае вызов метода со списком n аргументов эквивалентен вызову соответствующей функции с помощью списка аргументов, который создается путем вставки объекта метода перед первым аргументом.
Таким образом, для вашего метода вам необходимо указать два параметра. Первое всегда - self
- по крайней мере, это обычное имя, а второе - ваш фактический параметр. Таким образом, ваш фрагмент кода должен быть:
class a_class(object):
def a_method(self, txt):
print txt
instance = a_class()
instance.a_method('hello world!')
Обратите внимание, что класс явно наследует от объекта (я не уверен, что пустые скобки есть юридические). Вы также можете не предоставлять наследование, которое идентично для целей большинства, но отличается некоторыми деталями поведения системы типов; наследование от object
определяет класс a_class как класс нового стиля, а не класс старого стиля, что не имеет отношения к большинству целей, но, вероятно, стоит осознавать.
Вы не можете избежать их. Вам нужно понять «себя», иначе вы никогда не получите ничего, чтобы работать. Какой учебник вы используете? Возможно, мы порекомендуем лучшее. – 2010-12-03 17:52:26