我正在寻找一种方法来动态创建具有可通过典型实例表示法访问的特定属性的类。
DynoOne = createClass('DynoOne',props=['A','B'])
d = DynoOne (database='XYZ')
d.A = d.B + 1
DynoTwo = createClass('DynoTwo',props=['A','C','E'])
q = DynoTwo (database='QRS')
q.A = q.C + 2*q.E
如何实际获取和修改“道具”的详细信息将被隐藏。
这也使得在新道具可用时添加对它们的访问变得更加容易。
我尝试了以下技术,以了解 python 如何动态生成基本类属性:
类工厂来生成简单的类似结构的类? https://stackoverflow.com/questions/1264833/class-factory-to-produce-simple-struct-like-classes/1275088#1275088
我对 python 的初步阅读表明,类属性是处理引入 getter/setter 方法进行访问的一种方法。
不清楚的是如何在工厂构造函数方法中动态指定属性名称(无论是使用装饰器还是显式 property() 调用)
例如,使用 property() 。 。 。
class DynamicClass( someBase ):
def dynamic_getter(self):
# acquire "stuff"
return stuff
def dynamic_setter(self,stuff):
# store "stuff"
pass
dynamic_property_name = property(fget=dynamic_getter,fset=dynamic_setter)
当声明/构造类时,我需要为每个请求的道具创建一个集合。例如,DynoOne 类将为“A”和“B”拥有单独的属性/setter/getter。
我怀疑基于模板的 eval() 策略会起作用,但我可能缺少一些更基本和有效的技术。
感谢启发和学习机会:-)