gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 06:37:16 31 4
gpt4 key购买 nike

我写了一个父类:

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

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

问候

最佳答案

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

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

self.spark将在调用super().__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

关于python - 带有额外参数的子类 python 类继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59611229/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com