谁能解释一下在类Card和StandardDeck中'object'和'list'参数的目的是什么?我发现关于这方面的信息很少。
Phycharm对类Card()中的'object'这样说:类层次结构的基类。当被调用时,它不接受任何参数,并返回一个新的无特征的实例,该实例没有实例属性,也不能给定任何实例属性。
类卡被认为是基类,因为'object'参数?来自类StandardDeck的super().__init__()
继承自类Card吗?我真的希望有人能给一个好的解释,我已经挣扎了几个小时了。
def main():
class Card(object):
def __init__(self, value, suit):
self.value = value
self.suit = suit
class StandardDeck(list):
def __init__(self):
super().__init__()
suits = list(range(4))
values = list(range(13))
[[self.append(Card(i, j)) for j in suits] for i in values]
deck = StandardDeck()
for card in deck:
print(card)
main()
object
是衍生类Card
的基类(也称为super
类)。这意味着Card
继承了基类的所有功能和状态(正如其他人已经说过的,这无论如何都是隐含的),并且它允许Card
根据需要重写(或更改)方法。换句话说,Card
是一个比object
更专门化的类。
同样,list
是StandardDeck
的基类。
我还想补充一点,这不是一个特别好的设计。例如,list
有一个名为clear()
的方法。这对clear()
和StandardDeck
意味着什么?更好的设计是使用实现细节(实例变量)所需的任何数据结构。这有时被表示为不符合Liskov替换原则(LSP)。