比较python中的两个创建对象



我有一个从另一个类DooDad继承的类DooDadX。我正在尝试查看左侧self,如果是DooDadX实例,它将是不同的颜色。

我遇到的主要问题是我需要找出self中的CC_5是否是DooDadX实例。如果是这样,颜色将是绿色的,如果不是,则颜色将来自我的继承类。

在我的测试代码中,我在左侧被调用DooDadX。这应该将颜色更改为绿色,但我得到了蓝色的颜色。

我可以将所有代码链接起来,但与测试代码约为114行。如果这还不够,请告诉我。

class DooDadX(DooDad):
    def __init__(self, color, weight, value):
        super().__init__(color, weight, value)
        self._serial = "-" + str(self._serial)
        self._name = " DooDadX "

    def __mod__(self, other):
        if self == DooDadX:
            self._color = "green"
        maxWeight = max(self._weight, other._weight)
        rightValue = other._weight
        newDooDadX = DooDadX(self._color, maxWeight, rightValue)
        return newDooDadX

这是我的测试代码。

    if __name__=="__main__":
        doodads = []
        doodads.append(DooDad("red", 5, 10))
        doodads.append(DooDad("red", 8, 9,))
        doodads.append(DooDad("blue", 20, 15))
        doodads.append(DooDad("green", 2, 5))
        doodads.append(DooDadX("blue", 10, 12))
        doodads.append(doodads[0] + doodads[1])
        doodads.append(doodads[2] + doodads[0])
        doodads.append(doodads[3] - doodads[1])
        doodads.append(doodads[1] - doodads[3])
        doodads.append(doodads[0] * doodads[1])
        doodads.append(doodads[0] * doodads[2])
        doodads.append(doodads[0] / doodads[3])
        doodads.append(doodads[2] % doodads[4])
        doodads.append(doodads[4] % doodads[2])
        for doodad in doodads:
            print(doodad)

更改以下内容:

if self == DooDadX:

由此:

if isinstance(self, DooDadX):

如果要测试self是DooDadX的实例,或者是否是任何继承的DooDadX类的实例,请按照@joe的推荐进行。如果要测试自我是否仅是DooDadX的实例,请使用type()

if type(self) == DooDadX

希望这种轻微的区别是有帮助的。

最新更新