修改不同的对象而不检查标志

2024-04-23 12:19:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我想修改不同的对象。此时,我传递一个flags参数来决定是否执行更改。有没有一种方法可以使这项工作不经过任何标志,或这是最好的方式做这件事?我不觉得这是一个可扩展的解决方案,一旦我有更多的对象实例。你知道吗

def modifyfunc(self, flags, id_to_modify, value):
  if flags['object1']:
    self.object1.modify(id_to_modify, value)
  if flags['object2']:
    self.object2.modify(id_to_modify, value)
  if flags['object3']:
    self.object3.modify(id_to_modify, value)

注意,对于任何objectx,标志都可以是真的。假设任何objectx都正确地实现了modify方法(基本上,对象实例属于从同一基类继承的不同类型,因此它们都具有modify方法,但在这些对象之间的实现方式可能不同)。你知道吗


Tags: to对象实例方法selfidifvalue
1条回答
网友
1楼 · 发布于 2024-04-23 12:19:58

使用^{},可以访问对象的任意实例成员:

getattr(obj, instance_attribute_name)

示例:

>>> 'a'.upper()
'A'
>>> getattr('a', 'upper')()
'A'

代替标志,传递要修改的属性的名称如何?你知道吗

def modifyfunc(self, attr_names, id_to_modify, value):
    for attr_name in attr_names:
        getattr(self, attr_name).modify(id_to_modify, value)

...

obj.modifyfunc(['object1', 'object3'], 'id1', 'value1')

相关问题 更多 >