【问题标题】:How operator overloading can return a third class in Python?运算符重载如何在 Python 中返回第三个类?
【发布时间】:2023-04-07 04:21:02
【问题描述】:

我在不同的文件中有以下类

class Fruit():   
    def __init__(self, value=0):
        self.value = value

    def __add__(self, other):
        if type(self) == type(otro):
            ## PROBLEM AREA  ##################################################
            return type(self)(self.value + other.value)
        else:
          raise Exception.SumError(self, other) # Custom exception
    
    def __repr__(self):
      return f"{type(self).__name__}({self.value})"

Fruit()类是基类,下面两个子类都继承自该类

class Pear(Fruit):
    """docs"""
    def __init__(self, quantity=0):
        super().__init__(quantity)
        self.unit = "Pe"
class Apple(Fruit):
    """docs"""
    def __init__(self, quantity=0):
        super().__init__(quantity)
        self.unit = "Ap"

结果中需要的类如下:

class Market_List():
    """docs"""    
    def __init__(self, value=0):
        self.value = value

目前我可以用Pears() 和Apples() 用Apples() 添加Pears(),我的问题是如何让用Apples() 添加Pears() 给我一个Market_List() 对象。我已经尝试在 Fruit() 类的开头使用from market_list import Market_List,但是想在 Market_List() 类中做同样的事情来做逆运算然后它进入一个循环并给我一个错误

【问题讨论】:

    标签:
    python-3.x
    class
    inheritance
    operator-overloading