1 回答
TA贡献1963条经验 获得超6个赞
编辑2:在您进一步澄清您的问题后更新了我的回复(谢谢!)。
选项 1:您可以使用**kwargs和setattr使参数列表保持同步。例如,
class Example(object):
def __init__(self):
self.first = 1
self.second = 2
def set_info(self, **kwargs):
for argument, value in kwargs.items():
if not hasattr(self, argument):
raise ValueError('invalid argument {}'.format(argument))
setattr(self, argument, value)
# Usage
e = Example()
print(e.first, e.second)
e.set_info(first=1000, second=2000)
print(e.first, e.second)
# This would raise an exception
# e.set_info(some_random_attribute='blah')
这输出:
1 2
1000 2000
选项 2:您可以使用 @property 并为每个设置相应的设置器,而不是使用单独的方法来设置字段。例如,
class Properties(object):
def __init__(self):
self._thing = 10
@property
def thing(self):
return self._thing
@thing.setter
def thing(self, t):
self._thing = t
# Usage
p = Properties()
print(p.thing)
p.thing = 20
print(p.thing)
哪个打印
10
20
添加回答
举报