繁体   English   中英

带有额外参数的子类 python 类继承

[英]child class with extra arguments python class inheritance

我写了一个父类:

class Parent():
    def __init__(self, spark_session=None):
        try:
            # Instantiate Spark Session
            self.spark = spark_session
            if not self.spark:
                self.spark = SparkSession.builder.config("spark.sql.debug.maxToStringFields", 1000).appName("SparkTest") \
                    .getOrCreate()
        except Exception as e:
            print("Initialization of spark & logging couldn't be performed: {}".format(e))

然后子类在其构造函数中有一个额外的参数,即路径:

class Child(Parent):
    def __init__(self, path, spark=None):
        self.spark = super().__init__(spark)
        self.path = path

然后当我写这个:

a = Child("path", None)
print(a.spak)

为了:

self.spark = spark_session

我得到:

AttributeError: 'NoneType' object has no attribute 'spark' None

知道如何解决这个问题并使火花对象按预期实例化。

问候

self.spark = super().__init__(spark)

__init__不是构造函数。 初始化对象的属性并返回None ,而不是对象。

一旦您调用super().__init__ self.spark将自动初始化。

注意我也Parent.__init__改变了Parent.__init__ 在您的代码中self.spark没有定义,以防引发异常,这将导致其他错误。

class Parent:
    def __init__(self, spark_session=None):
        self.spark = spark_session            
        try:  
            if not self.spark:
                self.spark = SparkSession.builder .config("spark.sql.debug.maxToStringFields", 1000).appName("SparkTest") \
                .getOrCreate()
        except Exception as e:
            print("Initialization of spark & logging couldn't be performed: {}".format(e))


class Child(Parent):
    def __init__(self, path, spark=None):
        super().__init__(spark)
        self.path = path

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM