Eryk Sun <[email protected]> added the comment:
Field names define CField descriptor attributes on the class. Attribute names
should be strings, not bytes. There's no syntactically clean way to use a bytes
name. Consider the example of a generic property on a class:
>>> T = type('T', (), {b'p': property(lambda s: 0)})
>>> t = T()
>>> t.p
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'T' object has no attribute 'p'
>>> getattr(t, b'p')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: getattr(): attribute name must be string
We'd have to dig into the class dict and manually bind the property:
>>> vars(T)[b'p'].__get__(t)
0
----------
nosy: +eryksun
resolution: -> not a bug
stage: -> resolved
status: open -> closed
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue33242>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com