super 和继承作为对象单独传递有什么区别?

what is the difference between super and inheritance by passing it alone as an object?

在下面的示例中,我想知道什么时候应该使用其中之一进行继承?我认为两者都是有效的,为什么有时我必须使用 super 如果其他方法可行?

class User:

    def __init__(self):
        self._user = "User A"
        pass

class UserA(User):
    _user = "User B"
    def __init__(self):
        super().__init__()


class UserB(User):
    pass

super() 内置 returns 一个代理对象(superclass 的临时对象),允许我们访问基 class 的方法。例如:

class Mammal(object):
  def __init__(self, mammalName):
    print(mammalName, 'is a warm-blooded animal.')
    
class Dog(Mammal):
  def __init__(self):
    print('Dog has four legs.')
    super().__init__('Dog')

self 表示 class 的实例。通过使用“self”关键字,我们可以访问python

中class的属性和方法

你是对的,两者都有效。区别是:

  • UserA:您正在覆盖祖先的__init__方法。如果您想在初始化过程中添加一些东西,这很实用。但是,您仍然想要初始化祖先,这可以通过 super().__init__() 完成,尽管已经覆盖了 __init__ 方法。
  • UserB:您正在完全使用您继承的祖先的​​ __init__(通过不覆盖 __init__ 方法)。如果在初始化期间不需要做任何额外的事情,可以使用它。