class A:
def getTotal(self)
self.__total = 0
for each in self.__hand:
if each.getValue() == 1 and self.__total > 10:
self.__total += 1
elif each.getValue() == 1 and self.__total <10:
self.__total += 11
elif each.getValue() != 1:
self.__total += each.getValue()
return self.__total
class B:
def getTotal(self):
return A.getTotal()
这对我不起作用。从B类方法调用时,如何让A类返回总数
答案 0 :(得分:1)
您不能只是致电A.getTotal()
,因为它是未绑定的方法;没有任何内容可以绑定self
,因为你没有给它一个A
的实例,你有状态。您需要在A
的实例上调用它。我们只需要先找到一个。
从我理解B
的评论到玩家,A
是该玩家的一手牌。据推测,在游戏中,玩家可以在玩多轮游戏时玩更多的牌。
在这种情况下,您可以从玩家到手牌,如self.hand
。这是A
的一个实例,您可以在 上调用getTotal()
:
class B:
def getTotal(self):
return self.hand.getTotal()
A
也有__hand
属性可能令人困惑;这可能不是该属性的最佳名称,因为它是当前手牌的卡片列表。在这种情况下,最好将其命名为__cards
。
B.getTotal()
并非严格需要;您也可以使用instance_of_B.hand.getTotal()
,例如到达实例属性并直接在手上调用getTotal()
。但是,这或许可以揭示出类如何处理手,也许你想要处理不同的情况,如返回0
如果有可能在程序中的某些点完全没有手
另一件事:__total
中的A.getTotal()
是一个局部变量;您不需要在self
使用属性。删除self.
前缀,只需将其命名为total
:
def getTotal(self)
total = 0
for each in self.__hand:
if each.getValue() == 1:
if total > 10:
total += 1
else:
total += 11
else:
total += each.getValue()
return total
我也简化了功能逻辑。