iJustine Ответов: 1

Как передать значения в метод с помощью @classmethod


Я новичок в python, я учил себя около месяца, теперь я узнаю о @classmethod.
Я вижу это как частное в таких языках, как Java, хотя и не уверен. Я хочу понять, что он делает. Я решил создать эту небольшую программу

class Hello:
	def __init__(self, name):
	self.name = name

	@classmethod
	def say_hello(self):
	print("Hello {}".format(self.name))

	def reply(self):
	return self.say_hello()


Justine = Hello("Justine") 
Justine.reply()


Что я уже пробовал:

Поскольку методы с @classmethod имеют
cls

в качестве первого параметра
Я изменил self на cls, но все еще получаю ошибку (AttributeError: type object 'Hello' не имеет атрибута 'name'

1 Ответов

Рейтинг:
1

Richard MacCutchan

Вы заявили: say_hello как метод класса, что означает, что он не имеет доступа к переменным, принадлежащим объекту экземпляра, а только к переменным класса. Снимите крышку @classmethod декларация и она будет работать.

Видеть 9. классы — документация Python 3.7.1[^].