Mar*_*agh 3 python constructor
通常,类的构造函数将获取它的参数并将它们保存在实例上.例如:
class Example(object):
def __init__(self, title='',backtitle='', height=20, width=50):
self.title = title
self.backtitle = backtitle
self.height = height
self.width = width
Run Code Online (Sandbox Code Playgroud)
这是重复的,所以我做了一个帮助函数来自动执行此操作:
from inspect import getargspec
def save_args(values):
for i in getargspec(values['self'].__init__).args[1:]:
values['self'].__dict__[i] = values[i]
class Example(object):
def __init__(self, title='',backtitle='', height=20, width=50):
save_args(vars())
Run Code Online (Sandbox Code Playgroud)
我的问题如下:
当你的班级使用它时会失败__slots__.你可以setattr()改用:
from inspect import getargspec
def save_args(values):
for i in getargspec(values['self'].__init__).args[1:]:
setattr(values['self'], i, values[i])
Run Code Online (Sandbox Code Playgroud)
提供arguments关键字参数__init__当然是所有声明的槽.
否则,这应该适用于任何Python实现.
您可能对之前关于该主题的讨论感兴趣,该讨论引发了Python-ideas列表线程.