python中的点表示什么_Python中的点表示法。方法应该在对象之前还是之后?
一般来说,目标是第一位的。在
像这样:
object.methodName()
或者像这样:
self.isEmpty()
但我想知道为什么我的Python书教我这样称呼这个方法:
Deck.__str__(self)
我想知道为什么“self”在方法末尾的括号中,而不是在方法的开头。换句话说,为什么不这样写:
self.Deck._str_()
原因是上面的代码会抛出一个错误:
"Hand instance has no attribute Deck
之所以会出现上述错误,是因为Python认为“Deck”是self的一个属性。但在这种情况下,情况并非如此。牌组,是手型的父类型,它不是self的属性。在
这里是代码块,您可以在这里看到有问题的代码,以及父类型(Deck)和我正在处理的子类型(Hand)。在这段代码中,我们编写了一个方法,通过访问Deck中的字符串格式来覆盖Hand的字符串格式。代码段Deck.__str__(self)
是这样写的,因为我们需要一种方法来告诉Python我们希望它从哪个类型的对象复制字符串格式。在本例中,我们需要来自父级Deck的字符串格式。在
class Hand(Deck):
def __init__ (self, name = " "):
self.cards = []
self.name = namedef __str__(self):
s = "Hand "+ self.name
if self.isEmpty():
return s+" is empty\n"
else:
return s+ " contains\n" + Deck.__str__(self)
而且,正如@Martijn Pieters所说,使用SUPER:super().__str__()比我这样做要好:Deck.__str__(self)
我们还没有学习Super,但是您可以在这里了解更多信息(https://docs.python.org/2/library/functions.html#super)。Super基本上告诉Python为您找到父格式,并使用它。轻松多了!在
我希望这个解释是可以理解的。我试图过度解释以弥补任何不清楚的地方