Message234333
> super(type, cls).__setattr__(key, value)
In your case, super(type, cls).__setattr__ references object.__setattr__.
>>> super(type, MyClass).__setattr__.__objclass__
<class 'object'>
That's from the method resolution order (__mro__):
>>> print(*MyMeta.__mro__, sep='\n')
<class '__main__.MyMeta'>
<class '__main__.MetaA'>
<class '__main__.MetaB'>
<class 'type'>
<class 'object'>
Instead use super(MyMeta, cls), or in Python 3 just use super() in a method (under the hood the function uses a closure variable named __class__).
>>> super(MyMeta, MyClass).__setattr__.__objclass__
<class 'type'>
> type.__setattr__(MyClass, 'test', 42)
The above won't work for a Qt subclass. You need __setattr__ from sip.wrappertype.
>>> type.__setattr__(QtClass, 'test', 42)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't apply this __setattr__ to sip.wrappertype object
>>> print(*QtMeta.__mro__, sep='\n')
<class '__main__.QtMeta'>
<class '__main__.MetaA'>
<class 'sip.wrappertype'>
<class 'type'>
<class 'object'>
>>> super(QtMeta, QtClass).__setattr__.__objclass__
<class 'sip.wrappertype'>
>>> super(QtMeta, QtClass).__setattr__('test', 42)
>>> QtClass.test
42 |
|
Date |
User |
Action |
Args |
2015-01-20 01:08:39 | eryksun | set | recipients:
+ eryksun, devkid |
2015-01-20 01:08:38 | eryksun | set | messageid: <1421716118.95.0.0405463110133.issue23276@psf.upfronthosting.co.za> |
2015-01-20 01:08:38 | eryksun | link | issue23276 messages |
2015-01-20 01:08:38 | eryksun | create | |
|