如何解决在python中从另一个类动态调用类和类属性
我正在构建一组类,以帮助更好地管理围绕每个角色的复杂业务逻辑以及该角色内的操作。每个角色都是一个具有定义操作的方法的类。我遇到的问题,当动态定位类和类方法时,如果我在同一个对象中两次调用类方法,我会从第一次调用中得到原始结果。
ManageDistrict 和ManageOperations 继承的ActionBase 类是一个抽象类。没想到我遇到的问题需要它。
class Roles(object):
def __init__(self,roles,action):
self.roles = roles
self.action = action
self.role_class = self._get_role_class()
self.actions_that_can_be_performed = []
def _get_role_class(self):
classes = ["ManageDistrict","ManageOperations"]
_role_object = []
for role in self.roles:
class_role = None
for cls in classes:
class_role = getattr(eval(cls),"class_role")
if role == class_role:
_role_object.append(cls)
return _role_object
def perform_action(self,**kwargs) -> bool:
"""determine if user can perform the correct actions
Returns:
bool: [description]
"""
for cls in self.role_class:
try:
method = getattr(eval(cls),self.action)
return method(**kwargs)
except IDMRolesException as e:
return False
class ManageDistrict(ActionBase):
class_role = "ACTION_MANAGE_DISTRICT"
def __init__(self):
super().__init__()
@classmethod
def post_dispute(cls,**kwargs):
return kwargs['bool_val']
class ManageOperations(ActionBase):
class_role = "ACTION_MANAGE_OPERATIONS"
def __init__(self):
super().__init__()
@classmethod
def post_dispute(cls,**kwargs):
return kwargs['bool_val']
######################################################################################
role = Roles(roles=['ACTION_MANAGE_OPERATIONS'],action='post_dispute')
if role.perform_action(bool_val=True):
print('this is true')
if role.perform_action(bool_val=False):
print('this still returns true on the 2nd call')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。