1 回答
TA贡献1811条经验 获得超5个赞
这是一个有点hacky的方法。构建一个defaults包含允许参数默认值的字典。然后更新self.__dict__与**kwargs,在按键上的一些错误检查后:
class Box:
def __init(self):
pass
def configure(self, **kwargs):
defaults = {
"color": "#ffffff",
"weight": 1,
"empathy": 97,
"angle_x": 0,
"angle_y": 0,
"angle_z": 0,
"displacement_x": 0,
"displacement_y": 0,
"displacement_z": 0
}
bad_args = [k for k in kwargs if k not in defaults]
if bad_args:
raise TypeError("configure() got unexpected keyword arguments %s"%bad_args)
self.__dict__.update(defaults)
self.__dict__.update(kwargs)
现在你可以这样做:
box = Box()
box.configure(empathy = 98)
print(box.weight)
#1
print(box.empathy)
#98
但如果你这样做了:
box.configure(wieght = 2)
#TypeError: configure() got unexpected keyword arguments ['wieght']
添加回答
举报