Форум сайта python.su
0
Здравствуйте, помогите разобраться.
Присваиваю функции классу, по началу объект работает с функциями, когда добавляю функцию в которые использую другие функции, начинает ругаться что этих атрибутов нет.
>>> 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'
Офлайн
0
Если я не ошибаюсь это служебные слова надо изменить имя функций и класса. Во вторых имя класса должно заканчиваться () 
Отредактировано heyfec (Май 1, 2021 13:49:03)
Офлайн
857
heyfecНе должно. Это у тебя глюк.
Во вторых имя класса должно заканчиваться ()
heyfecЭто тоже бредни.
Если я не ошибаюсь это служебные слова надо изменить имя функций и класса.
Офлайн
0
py.user.next
Офлайн
44
наследование или миксинг
и вставьте ссылку на его url Офлайн
0
Так это же робот писал. Ты про генетическое программирование слышал когда программы сами пишут сами себя? Система автоматизированного программирования (САП)
Отредактировано heyfec (Май 1, 2021 19:30:56)
Офлайн
0
Спасибо всем!
Офлайн
857
harold7Ты делаешь это либо всё сразу в исходном классе, либо ты делаешь новый класс. Новый класс делать тоже по-разному можно. Можно отнаследоваться, можно агрегироваться. Лучше второе. Добавлять функции в существующий класс можно, но это плохая практика. В питоне это можно делать, а в других языках - нет. Так что для начала проанализируй, как ты пришёл к такой проблеме. Потому что при нормальном программировании - с соблюдением всех правил - она не возникает никогда. Видимо, ты что-то не то делаешь.
А как будет правильно добавить функции в уже существующий класс?
heyfecДа я много чего читал, только 90% из этого не используется. Я не использую, так как оно мне просто нафиг нигде не нужно. Хайпожорством я не занимаюсь, поэтому где там белые воротнички пасутся в данный момент, мне глубоко не интересно. Я занимаюсь созданием программ.
Ты про генетическое программирование слышал когда программы сами пишут сами себя?
Мне неинтересно лазить по конференциям и слушать каких-то дурачков, которые ничего в своей жизни не написали.
Отредактировано py.user.next (Май 1, 2021 23:29:21)
Офлайн
0
sys a: c:
Отредактировано heyfec (Май 2, 2021 11:32:13)
Офлайн
0
py.user.nextБлагодарю!
Ты делаешь это либо всё сразу в исходном классе, либо ты делаешь новый класс. Новый класс делать тоже по-разному можно. Можно отнаследоваться, можно агрегироваться. Лучше второе. Добавлять функции в существующий класс можно, но это плохая практика. В питоне это можно делать, а в других языках - нет. Так что для начала проанализируй, как ты пришёл к такой проблеме. Потому что при нормальном программировании - с соблюдением всех правил - она не возникает никогда. Видимо, ты что-то не то делаешь.
Офлайн