Python中如何从字符串数组初始化类对象的属性?
解决方案
核心实现思路如下:
- 封装独立的
Table类,实现你需要的insert、mean等表操作方法 - 在
Database类的__init__初始化方法中接收表名列表参数,遍历后为实例动态绑定对应名称的Table实例
完整实现代码:
class Table: def __init__(self, table_name): self.table_name = table_name self.storage = {} # 存储表数据的内置容器 def insert(self, data: dict): # 自定义插入逻辑 self.storage.update(data) def mean(self): # 自定义求均值逻辑 if not self.storage: return 0.0 values = list(self.storage.values()) return sum(values) / len(values) class Database: def __init__(self, tables: list[str]): # 遍历传入的表名列表,动态绑定属性 for table_name in tables: setattr(self, table_name, Table(table_name))
测试效果和你要求的用法完全一致:
data = Database(tables=['distance', 'speed']) # 调用对应方法 data.distance.insert({1: 25, 2: 55}) print(data.distance.mean()) # 输出 40.0 data.speed.insert({1: 30, 2: 60, 3: 90}) print(data.speed.mean()) # 输出 60.0
你之前的方案不符合需求是因为你直接把属性值绑定为了字符串本身,不具备insert、mean等方法调用能力,替换为具备对应业务能力的类实例即可解决问题。
内容的提问来源于stack exchange,提问作者FallingBrick
相关产品推荐
相关产品推荐

