如何从子类对象访问基类方法*args



我正在尝试从子类对象获取基类方法*args。这是代码:

class BaseView():
def __init__(self, *args, **kwargs):
for key, value in kwargs.items():
setattr(self, key, value)

class SecondLevelClass(BaseView):
def print_kwargs(self):
for key, value in self.__dict__.items():
print(key, value)
for x in self.args:
print(x)
some_object = SecondLevelClass('something', name="John", second_name="Keller", age=23, 
location='France')
print(vars(some_object))
print(type(some_object))
print(some_object.print_kwargs())

错误消息显示:AttributeError: 'SecondLevelClass' object has no attribute 'args'

如果要打印传递给__init__*args,如何获取它们?

更新:更新了缺少行的代码。

如果在派生类的__init__()方法中保存属性的副本,则可以使其工作,以便其print_kwargs()方法可以访问这些属性。

我的意思是:

class BaseView():
def __init__(self, *args, **kwargs):
for key, value in kwargs.items():
setattr(self, key, value)

class SecondLevelClass(BaseView):
# ADDED
def __init__(self, *args, **kwargs):
self.args = args
super().__init__(*args, **kwargs)
def print_kwargs(self):
for key, value in self.__dict__.items():
print(key, value)
for x in self.args:
print(x)
some_object = SecondLevelClass('something', name="John", second_name="Keller", age=23,
location='France')
print(vars(some_object))
print(type(some_object))
print(some_object.print_kwargs())

最新更新