Python - 许多方法差异很小

时间:2013-05-27 19:00:12

标签: python performance syntactic-sugar code-readability

我有几种方法在构造方面变化很小。它们用于在给定项目(field_name)上设置(类似Linux)权限。变量oview_permsgview_permsaview_perms分别代表所有者,组和匿名权限。这些变量是不可变的,所以这就是我在返回时设置它们的原因。

也许有一种方法可以简化这一点,但仍然可以轻松阅读?

def set_oview_perm(self, field_name, perm):
    self.oview_perms = self._set_field_permission(self.oview_perms, field_name, perm)

def set_gview_perm(self, field_name, perm):
    self.gview_perms = self._set_field_permission(self.gview_perms, field_name, perm)

def set_aview_perm(self, field_name, perm):
    self.aview_perms = self._set_field_permission(self.aview_perms, field_name, perm)

def set_oedit_perm(self, field_name, perm):
    self.oedit_perms = self._set_field_permission(self.oedit_perms, field_name, perm)

def set_gedit_perm(self, field_name, perm):
    self.gedit_perms = self._set_field_permission(self.gedit_perms, field_name, perm)

def set_aedit_perm(self, field_name, perm):
    self.aedit_perms = self._set_field_permission(self.aedit_perms, field_name, perm)

1 个答案:

答案 0 :(得分:1)

这样的东西?

def set_perm(self, ptype, field_name, perm):
    setattr(self, ptype + '_perm', self._set_field_permission(getattr(self, ptype + '_perm'), field_name, perm))

其中ptype'gedit''oview'等。我没有尝试过,但这应该有效。