Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
Litkevich Yuriy |
14.11.2010, 18:37
Сообщение
#1
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Вроде ООП в питоне есть, и вроде наследование есть.
Но почему-то наталкиваюсь на проблему: где method(args) - это метод базового класса или ещё дальше по иерархии.При таком варианте получаю ошибку: Цитата NameError: global name 'method' is not defined почему? неужели нужно писать имя базового класса перед методом и, как следствие, всё время помнить в каком из родительских классов этот метод был введён? |
|
|
|
|
Sokoloff |
14.11.2010, 22:14
Сообщение
#2
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 237 Регистрация: 1.4.2009 Из: Москва Пользователь №: 654 Спасибо сказали: 50 раз(а) Репутация: 11
|
Цитата(Litkevich Yuriy @ 14.11.2010, 19:37) Link Вроде ООП в питоне есть, и вроде наследование есть. Но почему-то наталкиваюсь на проблему: где method(args) - это метод базового класса или ещё дальше по иерархии.При таком варианте получаю ошибку: Цитата NameError: global name 'method' is not defined почему? неужели нужно писать имя базового класса перед методом и, как следствие, всё время помнить в каком из родительских классов этот метод был введён? В отличие от C++ питон не подставляет по умолчанию self(сишный this). Т.е. правильно вызывать надо так: |
|
|
|
|
Litkevich Yuriy |
14.11.2010, 22:52
Сообщение
#3
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
этот код даёт такую ошибку:Цитата setSizePolicy(sp); NameError: global name 'setSizePolicy' is not defined Цитата(Litkevich Yuriy @ 15.11.2010, 2:33) Link setSizePolicy(sp); это метод QWidget-а, так как к нему обращатся?например на update() подобной ругани я не видел Цитата(Litkevich Yuriy @ 15.11.2010, 2:35) Link например на update() подобной ругани я не видел не на него тоже ругается.так унаследованные методы нужно вызывать как свои собственные, вроде интерпретатор перестаёт ругаться. А как быть с методами базового класса, вроде следуя аналогии в конструкторе: Цитата BaseClass.__init__(self) я делаю тоже для другого метода:и получаю такую ошибку:Цитата QWidget.resizeEvent(event); TypeError: descriptor 'resizeEvent' requires a 'PySide.QtGui.QWidget' object but received a 'PySide.QtGui.QResizeEvent' сообщения об ошибке я вообще не понимаю. descriptor - описатель, причём здесь описатель? requires - требует, что значит требует? в качестве аргумента? |
|
|
|
|
Litkevich Yuriy |
14.11.2010, 23:40
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(Litkevich Yuriy @ 15.11.2010, 2:52) Link QWidget.resizeEvent(event); эту штуку победил.Нужно так вызывать метод базового класса: , т.е. передавать все аргументы, в том числе и ссылку на экземпляр класса (здесь self) |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 25.12.2025, 14:33 |