我有一个从另一个类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
希望这种轻微的区别是有帮助的。