[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    [PyQt]  staticMetaObject
From:       Kermit <stef.kermit () gmail ! com>
Date:       2012-03-29 11:44:06
Message-ID: CA+4Qr9bj0Et_Sj9=Wqv0GX2131H7X3kacWidLRh41DYEOce3tg () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Hi PyQt community,

i can't understand why staticMetaObject isn't know in __new__ construction

first step, i think is because staticMetaObject is create for instance,
but in this code bellow, staticMetaObject is know before real instanciation

no way for work with in __new__ function ?

Thx for your help
Kermit

"""
from PyQt4 import QtCore

class MetaKlass(QtCore.pyqtWrapperType):
    def __new__(meta_cls, name, bases, cls_dict):
        cls = QtCore.pyqtWrapperType.__new__(meta_cls, name, bases,
cls_dict)
        try:
            meta = cls.staticMetaObject
            print "__new__", meta
        except:
            print "error for __new__"
        return cls

    def __call__(cls, *args, **kwargs):
        try:
            meta = cls.staticMetaObject
            print "__call__", meta
        except:
            print "error for __call__"

        instance = cls.__new__(cls)
        return instance


class Klass(QtCore.QObject):
    __metaclass__ = MetaKlass



klass = Klass()
print klass

[Attachment #5 (text/html)]

Hi PyQt community,<div><br></div><div>i can&#39;t understand why staticMetaObject \
isn&#39;t know in __new__ construction</div><div><br></div><div>first step, i think \
is because staticMetaObject is create for instance,</div> <div>but in this code \
bellow, staticMetaObject is know before real \
instanciation</div><div><br></div><div>no way for work with in __new__ function \
?</div><div><br></div><div>Thx for your help</div><div>Kermit</div><div><br> \
</div><div>&quot;&quot;&quot;</div><div><div>from PyQt4 import \
QtCore</div><div><br></div><div>class MetaKlass(QtCore.pyqtWrapperType):</div><div>   \
def __new__(meta_cls, name, bases, cls_dict):</div><div>        cls = \
QtCore.pyqtWrapperType.__new__(meta_cls, name, bases, cls_dict)</div> <div>        \
try:</div><div>            meta = cls.staticMetaObject</div><div>            print \
&quot;__new__&quot;, meta</div><div>        except:</div><div>            print \
&quot;error for __new__&quot;</div><div>        return cls</div> <div>    </div><div> \
def __call__(cls, *args, **kwargs):</div><div>        try:</div><div>            meta \
= cls.staticMetaObject</div><div>            print &quot;__call__&quot;, \
meta</div><div>        except:</div><div>  print &quot;error for \
__call__&quot;</div><div>            </div><div>        instance = \
cls.__new__(cls)</div><div>        return instance</div><div>    </div><div>    \
</div><div>class Klass(QtCore.QObject):</div> <div>    __metaclass__ = \
MetaKlass</div><div>        </div><div>    </div><div><br></div><div>klass = \
Klass()</div><div>print klass</div></div><div><br></div>



_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic