I feel that self.x and x will be confused in the following codes.

    class MyDescriptor(object):
         def __init__(self, x):
             self.x = x
         def __get__(self, instance, owner):
             print('get from descriptor')
             return self.x
         def __set__(self, instance, value):
             print('set from descriptor')
             self.x = value
         def __delete__(self, instance):
             print('del from descriptor, the val is', self.x)

    exam=MyDescriptor("hallo")


when class MyDescriptor initiate , the `hallo` was passed into x in __init__(self, x); Literally self.x maybe understood to be self.hallo ,assign a attribute named 'hallo' to instance exam.
It is a better way to replace self.x to self.y .

    class MyDescriptor(object):
         def __init__(self, x):
             self.y = x
         def __get__(self, instance, owner):
             print('get from descriptor')
             return self.y
         def __set__(self, instance, value):
             print('set from descriptor')
             self.y = value
         def __delete__(self, instance):
             print('del from descriptor, the val is', self.y)
    exam=MyDescriptor("hallo")


There is a attribute y in instance exam , the `hallo` was passed into x in __init__(self, x).No any relation between x and y ,`hallo` and y.
My view is correct or not ?
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to