Уведомления

Группа в Telegram: @pythonsu

#1 Май 1, 2021 12:26:18

harold7
Зарегистрирован: 2021-05-01
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка при работе с self

Здравствуйте, помогите разобраться.
Присваиваю функции классу, по началу объект работает с функциями, когда добавляю функцию в которые использую другие функции, начинает ругаться что этих атрибутов нет.

 >>> 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'

Офлайн

#2 Май 1, 2021 13:47:06

heyfec
От: dfkjnfм
Зарегистрирован: 2021-04-20
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка при работе с self

Если я не ошибаюсь это служебные слова надо изменить имя функций и класса. Во вторых имя класса должно заканчиваться ()

Отредактировано heyfec (Май 1, 2021 13:49:03)

Офлайн

#3 Май 1, 2021 13:56:49

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Ошибка при работе с self

heyfec
Во вторых имя класса должно заканчиваться ()
Не должно. Это у тебя глюк.
heyfec
Если я не ошибаюсь это служебные слова надо изменить имя функций и класса.
Это тоже бредни.

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



Офлайн

#4 Май 1, 2021 14:24:55

harold7
Зарегистрирован: 2021-05-01
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка при работе с self

py.user.next

А как будет правильно добавить функции в уже существующий класс?

Офлайн

#5 Май 1, 2021 16:43:59

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Ошибка при работе с self

наследование или миксинг



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#6 Май 1, 2021 18:42:12

heyfec
От: dfkjnfм
Зарегистрирован: 2021-04-20
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка при работе с self

Так это же робот писал. Ты про генетическое программирование слышал когда программы сами пишут сами себя? Система автоматизированного программирования (САП)

Отредактировано heyfec (Май 1, 2021 19:30:56)

Офлайн

#7 Май 1, 2021 21:10:06

harold7
Зарегистрирован: 2021-05-01
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка при работе с self

Спасибо всем!

Офлайн

#8 Май 1, 2021 23:28:07

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Ошибка при работе с self

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

heyfec
Ты про генетическое программирование слышал когда программы сами пишут сами себя?
Да я много чего читал, только 90% из этого не используется. Я не использую, так как оно мне просто нафиг нигде не нужно. Хайпожорством я не занимаюсь, поэтому где там белые воротнички пасутся в данный момент, мне глубоко не интересно. Я занимаюсь созданием программ. Мне неинтересно лазить по конференциям и слушать каких-то дурачков, которые ничего в своей жизни не написали.



Отредактировано py.user.next (Май 1, 2021 23:29:21)

Офлайн

#9 Май 2, 2021 11:08:11

heyfec
От: dfkjnfм
Зарегистрирован: 2021-04-20
Сообщения: 33
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка при работе с self

sys a: c:

Отредактировано heyfec (Май 2, 2021 11:32:13)

Офлайн

#10 Май 2, 2021 11:23:01

harold7
Зарегистрирован: 2021-05-01
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка при работе с self

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

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version