سؤال

أحاول إنشاء فئة نقطة تعرف خاصية تسمى "التنسيق". ومع ذلك، فإنه لا يتصرف كما أتوقع ولا يمكنني معرفة السبب.

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):
    # ...
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top