[Twisted-Python] what is a non-class class?

Glyph Lefkowitz glyph at twistedmatrix.com
Wed Sep 3 15:28:40 MDT 2014


On Sep 3, 2014, at 12:55 AM, Wolfgang Rohdewald <wolfgang.kde at rohdewald.de> wrote:

> Am Mittwoch, 3. September 2014, 00:29:59 schrieb Glyph:
>>> That is my problem. How do I know if the object is of a non-class class?
>> 
>> isinstance(something, (types.ClassType, type)).
> 
> but that will make it possible to attach a method even to type "int"

Yes, that's fine.  'int' has methods, there's no reason that those methods couldn't be serialized by jelly.  For example:

>>> (3).conjugate
<built-in method conjugate of int object at 0x7feb18410a78>

The bound method object there is the sort of thing that we're talking about.

Particularly since we might be talking about a subclass of 'int' with its own overridden conjugate method, and the im_class attribute says which class the method's function actually came from.

> Python2:
> 
>>>> isinstance(int, type)
> True
> 
>>>>> isinstance(object, type)
>> True
>>>>> isinstance(object(), type)
>> False

> Sure but the test only gets the class and it should certainly not instantiate it.

Right; the point is that you get a thing, and that thing may be a class object _or_ it might be an instance object, and if it's an instance that's invalid.

> Meanwhile I believe it is best to simply remove the test since python itself
> will reject most:
> 
>>>> a=int
>>>> a.x=5
> Traceback (most recent call last):
>  File "<stdin>", line 1, in <module>
> TypeError: can't set attributes of built-in/extension type 'int'

This is about serializing and deserializing existing methods, not assigning attributes to instances.

-glyph

-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/twisted-python/attachments/20140903/d64d2cea/attachment-0002.html>


More information about the Twisted-Python mailing list