首页 > 解决方案 > 超级父类和传递类变量的大多数pythonic方式

问题描述

我有一个父类和一个子类。父类需要一些预定义的类变量才能运行call()。对象未在子类中定义。

问题:在super() 不更改父类的情况下调用时传递变量的最 Pythonic 方式是什么?

例子:

class Parent:
  def __init__(self):
    self.my_var = 0

  def call(self):
    return self.my_var + 1

class Child(Parent):
  def __init__(self):
    self.different_var = 1

  def call(self):
    my_var = 0
    super().__call__() # What is the most pythonic way of performing this line

我知道我可以my_var在子类中创建一个类对象,它会起作用,但必须有一个更好的。如果不是,那也是一个可以接受的答案。

标签: pythonclasssuper

解决方案


您的版本只是一个混合。你必须__init__super.

class Parent:
    def __init__(self):
        self.my_var = 0

    def call(self):
        return self.my_var + 1

class Child(Parent):
    def __init__(self):
        super().__init__()    #init super
        self.different_var = 1

    def call(self):
        self.my_var = 50
        return super().call() #return call() from super
        
c = Child()
print(c.call()) #51

推荐阅读