运行时获取指定表对应的Python Schema定义的代码修正需求
运行时获取指定表对应的Python Schema定义的代码修正需求
嘿,我看出来你的问题啦!当前你的get_schema方法只是把传入的字符串原封不动返回了,所以才会输出schema_table1而不是对应的字典。咱们只需要稍微修改一下这个方法,让它能根据传入的属性名去读取Test实例里对应的schema字典就行。
修正后的核心代码(修改Test类的get_schema方法)
def get_schema(self, table_name): # 使用getattr根据属性名字符串获取对应实例属性,第二个参数是默认值,避免传入不存在的表名报错 schema = getattr(self, table_name, None) return schema
完整修正后的代码
class Test: def __init__(self): self.schema_table1 = { "name": "str", "add": "str" } self.schema_table2 = { "n1": "str", "n2": "str" } def get_schema(self, table_name): schema = getattr(self, table_name, None) return schema class Test2: def __init__(self): self.test_obj = Test() def process(self): table_name = "schema_" + 'table1' print(self.test_obj.get_schema(table_name)) test2_obj = Test2() test2_obj.process()
运行后的输出
{ "name": "str", "add": "str" }
简单解释下:getattr(self, table_name, None)这个函数的作用就是,从当前Test实例(self)中,取出名字和table_name字符串一致的属性值。这样当你传入"schema_table1"时,就会精准拿到self.schema_table1这个字典,完美符合你的预期~
备注:内容来源于stack exchange,提问作者bamitabh
相关产品推荐
相关产品推荐

