2013-05-27 9 views
1

У меня есть несколько методов, которые мало меняются в конструкции. Они предназначены для установки (linux-like) разрешений для данного элемента (field_name). Переменные oview_perms, gview_perms, aview_perms представляют собой права владельца, группы и анонимных пользователей соответственно. Эти переменные являются неизменяемыми, поэтому я поставил их на возврат.Python - Много методов с небольшими отличиями

Возможно, есть способ упростить это, но все же сохранить его легко читаемым?

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

Что-то вроде этого?

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' и т.д. Я не пробовал, но это должно работать.