-
Notifications
You must be signed in to change notification settings - Fork 226
Open
Description
If a type is patched with a descriptor, referencing the name on the type (rather than an instance) hits the descriptor's getter/setter, where it does not in CPython.
class SomeDescriptor(object):
def __get__(self, obj, obj_type=None):
print('__get__', self, obj, obj_type)
return self
def __set__(self, obj, value):
print('__set__', self, obj, value)
return self
class Thing(object):
@property
def value(self):
return 123
original_property = Thing.value
Thing.value = SomeDescriptor()
Thing.value = original_property
print(Thing().value)
CPython gives:
123
while IronPython gives
('__set__', <SomeDescriptor object at 0x000000000000006C>, None, <property object at 0x000000000000006D>)
('__get__', <SomeDescriptor object at 0x000000000000006C>, <Thing object at 0x000000000000006E>, <class '__main__.Thing'>)
<SomeDescriptor object at 0x000000000000006C>
Version info:
IronPython 2.7.12 (2.7.12.1000)
[.NETFramework,Version=v4.5 on .NET Framework 4.8.9232.0 (64-bit)]
Python 2.7.18 (v2.7.18:8d21aa21f2, Apr 20 2020, 13:25:05) [MSC v.1500 64 bit (AMD64)] on win32
Metadata
Metadata
Assignees
Labels
No labels