Найти - Пользователи
Полная версия: Ошибка при работе с self
Начало » Python для новичков » Ошибка при работе с self
1 2
harold7
Здравствуйте, помогите разобраться.
Присваиваю функции классу, по началу объект работает с функциями, когда добавляю функцию в которые использую другие функции, начинает ругаться что этих атрибутов нет.
 >>> class move:
	def left(self):
		ptint('move left')
	def right(self):
		ptint('move right')
	def forward(self):
		ptint('move forward')
	def back(self):
		ptint('move back')
		
>>> gg = move()
>>> gg.back()
Traceback (most recent call last):
  File "<pyshell#124>", line 1, in <module>
    gg.back()
  File "<pyshell#122>", line 9, in back
    ptint('move back')
NameError: name 'ptint' is not defined
>>> class move:
	def left(self):
		print('move left')
	def right(self):
		print('move right')
	def forward(self):
		print('move forward')
	def back(self):
		print('move back')
		
>>> gg = move()
>>> gg.back()
move back
>>> gg.forward()
move forward
>>> class move:
	def moves(self):
		self.left()
		self.right()
		self.back()
		self.forward()
		
>>> gg = move()
>>> gg.moves()
Traceback (most recent call last):
  File "<pyshell#138>", line 1, in <module>
    gg.moves()
  File "<pyshell#136>", line 3, in moves
    self.left()
AttributeError: 'move' object has no attribute 'left'
>>> gg.back()
Traceback (most recent call last):
  File "<pyshell#139>", line 1, in <module>
    gg.back()
AttributeError: 'move' object has no attribute 'back'
heyfec
Если я не ошибаюсь это служебные слова надо изменить имя функций и класса. Во вторых имя класса должно заканчиваться ()
py.user.next
heyfec
Во вторых имя класса должно заканчиваться ()
Не должно. Это у тебя глюк.
heyfec
Если я не ошибаюсь это служебные слова надо изменить имя функций и класса.
Это тоже бредни.

Он просто повторно класс создал без методов, поэтому они и не обнаружены.

harold7
py.user.next

А как будет правильно добавить функции в уже существующий класс?
AD0DE412
наследование или миксинг
heyfec
Так это же робот писал. Ты про генетическое программирование слышал когда программы сами пишут сами себя? Система автоматизированного программирования (САП)
harold7
Спасибо всем!
py.user.next
harold7
А как будет правильно добавить функции в уже существующий класс?
Ты делаешь это либо всё сразу в исходном классе, либо ты делаешь новый класс. Новый класс делать тоже по-разному можно. Можно отнаследоваться, можно агрегироваться. Лучше второе. Добавлять функции в существующий класс можно, но это плохая практика. В питоне это можно делать, а в других языках - нет. Так что для начала проанализируй, как ты пришёл к такой проблеме. Потому что при нормальном программировании - с соблюдением всех правил - она не возникает никогда. Видимо, ты что-то не то делаешь.

heyfec
Ты про генетическое программирование слышал когда программы сами пишут сами себя?
Да я много чего читал, только 90% из этого не используется. Я не использую, так как оно мне просто нафиг нигде не нужно. Хайпожорством я не занимаюсь, поэтому где там белые воротнички пасутся в данный момент, мне глубоко не интересно. Я занимаюсь созданием программ. Мне неинтересно лазить по конференциям и слушать каких-то дурачков, которые ничего в своей жизни не написали.
heyfec
sys a: c:
harold7
py.user.next
Ты делаешь это либо всё сразу в исходном классе, либо ты делаешь новый класс. Новый класс делать тоже по-разному можно. Можно отнаследоваться, можно агрегироваться. Лучше второе. Добавлять функции в существующий класс можно, но это плохая практика. В питоне это можно делать, а в других языках - нет. Так что для начала проанализируй, как ты пришёл к такой проблеме. Потому что при нормальном программировании - с соблюдением всех правил - она не возникает никогда. Видимо, ты что-то не то делаешь.
Благодарю!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB