我正在尝试从子类对象获取基类方法*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())