Object Can';找不到属性

Object Can';找不到属性,object,attributes,python-3.7,Object,Attributes,Python 3.7,我有一副牌和一张牌。我将卡片作为参数发送,希望在卡片组中找到它并将其移除 我的代码如下所示: 类卡: suitList=[“梅花”、“钻石”、“红心”、“黑桃”] 排名=[“0”、“A”、“2”、“3”、“4”、“5”、“6”、“7”, “8”、“9”、“10”、“杰克”、“女王”、“国王”] 定义初始(自我,等级=0,适合=0): self.rank=等级 西服 舱面: 定义初始化(自): self.cards=[] 对于范围(4)内的西装: 对于范围(1,14)中的排名: self.card

我有一副牌和一张牌。我将卡片作为参数发送,希望在卡片组中找到它并将其移除

我的代码如下所示:

类卡:
suitList=[“梅花”、“钻石”、“红心”、“黑桃”]
排名=[“0”、“A”、“2”、“3”、“4”、“5”、“6”、“7”,
“8”、“9”、“10”、“杰克”、“女王”、“国王”]
定义初始(自我,等级=0,适合=0):
self.rank=等级
西服
舱面:
定义初始化(自):
self.cards=[]
对于范围(4)内的西装:
对于范围(1,14)中的排名:
self.cards.append(卡片(等级、套装))
def removeCard(自身、卡):
如果自助卡中有卡片:
self.cards.remove(卡)
返回真值
其他:
返回错误
甲板
打印(卡片组移除卡片(卡片(1,0)))

每次我运行这个程序时,它都会打印“False”,并且找不到卡。

问题是Python不知道如何比较
卡是否相等。为了解决这个问题,我们需要制作
\uuuu eq\uuuuu
魔术函数,将实际的
与其他
()进行比较:

印刷品:

Before remove:  52
After remove:  51
True

问题是Python不知道如何比较
是否相等。为了解决这个问题,我们需要制作
\uuuu eq\uuuuu
魔术函数,将实际的
与其他
()进行比较:

印刷品:

Before remove:  52
After remove:  51
True

首先,
对于范围(1,14)
中的排名是错误的,请尝试将其更改为
范围(14)
。后者将包括0,它是rankList中的索引

此外,为了使self.cards
中的
卡正常工作,您必须在卡内定义eq

def __eq__(self, other: card) -> bool:
    return self.rank == other.rank and self.suit == other.suit

为了在类对象上使用python的标准运算符或关键字,您需要自己添加功能。这个概念称为运算符重载。

首先,范围(1,14)中的秩的
是错误的。
请尝试将其更改为
范围(14)
。后者将包括0,它是rankList中的索引

此外,为了使self.cards
中的
卡正常工作,您必须在卡内定义eq

def __eq__(self, other: card) -> bool:
    return self.rank == other.rank and self.suit == other.suit

为了在类对象上使用python的标准运算符或关键字,您需要自己添加功能。这个概念被称为运算符重载。

Thnks用于回复。我之所以使用range(1,14),是因为我希望rankList[1]=1,而不是rankList[1]=2,以此类推,“0”从未被使用过。我明白了,现在有意义了。作为一名程序员,我的想法比一个普通人要多。我忘了0不在甲板上!如果你想节省内存,另一种方法是去掉列表中的零,并将其设置为范围(0,13),但这取决于你自己。程序员毕竟是从0开始计数的。Thnks代表回答。我之所以使用range(1,14),是因为我希望rankList[1]=1,而不是rankList[1]=2,以此类推,“0”从未被使用过。我明白了,现在有意义了。作为一名程序员,我的想法比一个普通人要多。我忘了0不在甲板上!如果你想节省内存,另一种方法是去掉列表中的零,并将其设置为范围(0,13),但这取决于你自己。程序员毕竟是从0开始计数的。