Python добавь и получи маги c (Дандер) методы - PullRequest
1 голос
/ 12 марта 2020

Я столкнулся с проблемой, касающейся Python более сложных методов. Есть класс, который представляет число, однако я хочу встроить некоторые ограничения в арифметику c этого представленного числа. Итак, у меня есть следующее:

class Property:
    def __init__(self, value):
        self.value = value
    def __get__(self, instance, owner):
        return instance.value
    def __set__(self, instance, value):
        # Implement some arithmetic boundaries
        instance.value
    def __add__(self, other):
        # Implement arithmetic boundaries
        self.value += other
    def __sub__(self, other):
        etc..

Теперь это не сработает. Если я создам экземпляр и попытаюсь добавить к этому значению примерно так:

p = Property(0)
p + 5
p = 6

P больше не будет иметь свойство type, вместо этого int. Я хотел бы объединить все эти более сложные методы. Но это не представляется возможным.

...