سؤال
أحاول إنشاء فئة نقطة تعرف خاصية تسمى "التنسيق". ومع ذلك، فإنه لا يتصرف كما أتوقع ولا يمكنني معرفة السبب.
class Point:
def __init__(self, coord=None):
self.x = coord[0]
self.y = coord[1]
@property
def coordinate(self):
return (self.x, self.y)
@coordinate.setter
def coordinate(self, value):
self.x = value[0]
self.y = value[1]
p = Point((0,0))
p.coordinate = (1,2)
>>> p.x
0
>>> p.y
0
>>> p.coordinate
(1, 2)
يبدو أن PX و PY لا يتم تعيينها لسبب ما، على الرغم من تعيين هذه القيم "يجب". أي شخص يعرف لماذا هذا؟
المحلول
ال property
الطريقة (والملحق، @property
ديكور) يتطلب فئة نمط جديد أي فئة thatclasses object
.
على سبيل المثال،
class Point:
يجب ان يكون
class Point(object):
أيضا، setter
تمت إضافة السمة (جنبا إلى جنب مع الآخرين) في بيثون 2.6.
نصائح أخرى
سيعمل إذا كنت تستمد نقطة من الكائن:
class Point(object):
# ...
لا تنتمي إلى StackOverflow