类定义中'list'和'object'作为参数的说明



谁能解释一下在类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更专门化的类。

同样,listStandardDeck的基类。

我还想补充一点,这不是一个特别好的设计。例如,list有一个名为clear()的方法。这对clear()StandardDeck意味着什么?更好的设计是使用实现细节(实例变量)所需的任何数据结构。这有时被表示为不符合Liskov替换原则(LSP)。

最新更新