Python。如何创建一个类,这样我就可以用它创建一组相关的对象(比如“石头、布、剪刀”)?

2024-03-28 21:13:02 发布

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

请给我Python。你知道吗

我想问的是,如何创建抽象对象(如“石头、布、剪刀”),并直接比较它们?你知道吗

谢谢。你知道吗

#class Weapon:
   # pass

#rock = Weapon()

编辑时间:

抱歉问了个坏问题。我没说清楚。 我想要一些这样的代码:

class Weapon():
    def __init__(self, agr1[, agr2]):
        self.agr1 = agr1
        #self.agr2 = agr2
    def __cmp__(self, other):
        #if some condition:   
            return -1
        #if self == other:  
            return 0
        #if some condition:
            return 1

rock = Weapon(arg1, arg2)
scissors = Weapon(arg1, arg2)

#When it's done. It should look like this:
>>>rock > scissors
True

Tags: selfreturnifdefsomeconditionclassother
2条回答

要实现自定义类之间的比较,需要实现comparison magic methods,例如:

def __gt__(self, other): # is self greater than other?
    return self.value > other.value # compare value attribute

但是,如果您的类没有属性,那么您实际上是在尝试比较类实例分配给的名称,这是没有意义的。相反,重构类:

class Weapon(object):

    def __init__(self, name, beats):
        self.name = name
        self.beats = beats

    def __gt__(self, other):
        return other.name in self.beats

现在你可以制造武器了

rock = Weapon("rock", ["scissors", "lizard"])

Python类具有内置的方法__eq__,在比较2类对象时调用该方法。你知道吗

必须重写此方法并检查要比较的值。你知道吗

相关问题 更多 >