Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较Python中创建的两个对象_Python - Fatal编程技术网

比较Python中创建的两个对象

比较Python中创建的两个对象,python,Python,我有一个类doodax,它继承自另一个类DooDad。我试着看左手边,self,如果它是一个doodax实例,它将是一个不同的颜色 我遇到的主要问题是,我需要找出中的self是否是doodax实例。如果是,颜色将是绿色,如果不是,颜色将来自我继承的类 在我的测试代码中,左侧调用了doodax。这应该改变颜色为绿色,但我得到的颜色是蓝色 我可以链接我所有的代码,但是测试代码大约有114行。如果这还不够,请告诉我 class DooDadX(DooDad): def __init__(sel

我有一个类
doodax
,它继承自另一个类
DooDad
。我试着看左手边,
self
,如果它是一个
doodax
实例,它将是一个不同的颜色

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

在我的测试代码中,左侧调用了
doodax
。这应该改变颜色为绿色,但我得到的颜色是蓝色

我可以链接我所有的代码,但是测试代码大约有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是否是
doodax
的实例,或者它是否是
doodax
的任何继承类的实例,请按照@Joe的建议执行。如果要测试self是否只是
doodax
的一个实例,请使用:


希望这个细微的区别能有所帮助。

使用
isinstance(self,derived)
您能解释一下代码应该做什么吗?它似乎在变异
self
并创建一个新的
doodax
。为什么这是
%
的行为?如果您想知道
self
是否是
doodax
实例,但不是从
doodax
派生的类型的实例,您可以做
If self.\uuu class.\uu name.\uuuuuu=='doodax'
,但这感觉不太像Pythonic。在我的测试代码中,我有一个对象列表。这就是给我带来麻烦的一个。左边是一个doodax(在我的列表[4]中是doodax),我应该是绿色的,但是我的颜色是蓝色的。doodads.append(DooDadX(“蓝色”,10,12)doodads.append(doodads[4]%doodads[2])为什么不将颜色存储在类中?请阅读-测试代码真的没有任何帮助。这段代码有什么意义?
if type(self) == DooDadX