我见过几个题目类似的问题,但似乎都不适合我
我想用干净的“pythonic”语法动态地创建python对象,可能使用方法。到目前为止我得到的是:
import types
class QuickObject:
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
def with_methods(self, **kwargs):
for name, method in kwargs.items():
self.__dict__[name] = types.MethodType(method, self)
return self
可能的用途:
ob = QuickObject(x=10, y=20)
print(ob.x, ob.y)
ob = QuickObject(x=10, y=20).with_methods(sum=lambda s: s.x + s.y)
print(ob.x, ob.y, ob.sum())
它是有效的,看起来很清楚,但似乎有点奇怪,我相信有一个更好的方法来实现这一点,而不是我对QuickObject
类的定义
我知道namedtuple
,但它是不可变的,不适用于方法,也不太酷,因为它必须事先为每个具有不同字段的对象定义
内置字典也不提供方法调用的语法,也不允许在没有自定义dict子类的情况下使用dictionary.key
语法访问数据
TLDR:我正在寻找一种飞行物体的配方,包括:
ClassName(field1=value, field2=value, ...)
语法李>进一步阅读:
目前没有回答
相关问题 更多 >
编程相关推荐