比较Python中创建的两个对象

2024-04-19 04:07:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类DooDadX,它是从另一个类DooDad继承的。我试着看左边,self,如果它是一个DooDadX实例,它将是一个不同的颜色。你知道吗

我遇到的主要问题是我需要找出self,在__mod__,是否是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)

Tags: 实例selfmodinit颜色defcolorother
2条回答

更改此项:

if self == DooDadX:

由此:

if isinstance(self, DooDadX):

如果您想测试self是否是DooDadX的实例,或者它是否是DooDadX的任何继承类的实例,请按照@Joe的建议执行。如果要测试self是否只是DooDadX的实例,请使用^{}

if type(self) == DooDadX

希望这个小小的区别能有所帮助。你知道吗

相关问题 更多 >