在python类中使用一个变量访问一个函数

我正在尝试开发一个类,它可以根据纳入类init函数的字段类型来清理字典,它的结构是这样的,但现在还不行,因为我不知道如何从类实例中动态地获取一个变量,以及如何应用该函数来处理每个变量。

它的结构是这样的,但现在还不能用,因为我不知道如何从类实例中动态地获取一个变量,以及如何将函数应用到每个变量。

class Cleaner:
    def __init__(self):
        self.int_fields = ['field_1', 'field_2']
        self.float_fields = ['field_3', 'field_4']
        self.field_types = [('int_fields', int), ('float_fields', float)]

    def get_clean_dict(self, dict):
        cleaned_dict = {}
        for field_type in self.field_types:
            for field_name, transform_func in getattr(self, field_type):
                try:
                    cleaned_dict[field_name] = transform_func(dict.get(field_name))
                except Exception:
                    cleaned_dict[field_name] = None
        return cleaned_dict

这是我希望它的表现。


sample_dict = {
    'field_1': 234,
    'field_2': 'Invalid',
    'field_3': 45.32345,
    'field_4': 'Invalid'
}

cleaner_inst = Cleaner()

cleaned_dict = cleaner_inst.get_clean_dict(sample_dict)

cleaned_dict = {
    'field_1': int(234),
    'field_2': None,
    'field_3': float(45.32345),
    'field_4': None
}

解决方案:

问题似乎是在获取字段类型的行中。变换函数(transform_func). 中的数值。字段类型 是名称和变压器的元组,但这个元组是作为参数用于 getattr 而不是只用名字。

def get_clean_dict(self, dict):
    cleaned_dict = {}
    # transform_func belongs to self.field_types
    for field_type, transform_func in self.field_types:
        for field_name in getattr(self, field_type):
            try:
                cleaned_dict[field_name] = transform_func(dict.get(field_name))
            except Exception:
                cleaned_dict[field_name] = None
    return cleaned_dict

给TA打赏
共{{data.count}}人
人已打赏
未分类

缺省参数强制执行类型标识

2022-9-8 0:33:21

未分类

将PictureBox从一个窗体移动到另一个窗体C#。

2022-9-8 0:44:16

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索