[英]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.