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