Найти - Пользователи
Полная версия: Получение parent-object
Начало » Python для новичков » Получение parent-object
1
Ockonal
Приветствие, не пинайте ногами, вопрос появился =) Есть модуль: application.py
В нем определен класс Application. Там реализовал статистическую ф-цию, для получения объекта класса
@staticmethod
def returnParent():
return self
В другом модуле делаю:
from application import *
...
temp = Application.returnParent()
NameError: global name ‘returnParent’ is not defined
Что я делаю не так?
PooH
Ockonal
NameError: global name ‘returnParent’ is not defined
Что я делаю не так?
А точно ‘returnParent’ is not defined? не self? ;)
Ockonal
Сорри, не понял.
———–
Как мне можно получить ссылку на тот класс?
Мне нужно использовать её в качестве ссылки на parent-class
———–
Может я что-то не понимаю. В с++ я делал так:
return this;
Чтобы получить ссылку на объект класса. Не знаю, есть ли такая возможность в Питоне. Подскажите.
Ockonal
Пытаюсь сделать по-другому: сгенерировать мой сигнал, по которому уже в классе делать то, что надо. Но опять же проблемка…
В каком-то классе вызываю:
self.emit(SIGNAL("signalMoveChildren()"))
Обработчик, который находится в нужном классе (Application):
    def slotMoveChildren(self):
print 'emited signalMoveChildren'
# Working...
В мейн-функции связываю:
    myapp = Application()
QtCore.QObject.connect(myapp, SIGNAL("signalMoveChildren()"), myapp.slotMoveChildren)
Сигнал отсылается, но я его не получаю. Можете подсказать причину?
PooH
Если я правильно понял что вам нужно:
>>> class A: pass
...
>>> class B: pass
...
>>> class C(A,B): pass
...
>>> C
<class __main__.C at 0x009F4A50>
>>> C.__bases__
(<class __main__.A at 0x009F4810>, <class __main__.B at 0x009F48A0>)
Но что-то мне подозрительна ваша архитектура… зачем вам знать парента вне класса?

В питоне self - ссылка на экземпляр класса причем она передается в метод явно
def method(self): pass
а в статическом методе и вовсе не доступна

ЗЫ: Второе ваше сообщение прочитал уже после того как ответил. Извините, с PyQt не работал, кто-нибудь ответит, но ищите вы похоже не там
Ockonal
Но что-то мне подозрительна ваша архитектура…
В чем ваши подозрения?
———————–
Ок, как я могу передать ссылку на класс другому классу? В нужный момент.
PooH
Навскидку(как сказал уже с PyQt не работал): Application - наследуется от чего-то? возможно в PyQt нужно наследовать от QObject(и наследников) чтобы иметь возможность обрабатывать сигналы?
Ockonal
Наследуется QDesktopWidget, который в свою очередь наследуется QObject. Да и нелогически, если ошибок во время работы нету, значит вызывать сигналы можно.
Griffon
Почитал док по классам. Разве в питоне есть статические классы?
Может сначала создать экземпляр класса. А уже потом присваивать куда нибудь его методы.
crchemist
Griffon
Почитал док по классам. Разве в питоне есть статические классы?
Є статичні МЕТОДИ
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