我在python中定义了这个类
class MyClass(object):
@property
def property1(self):
# type: () -> pb.data.Property1
@property
def property2(self):
# type: () -> pb.data.Property2
如何使用反射来读取该类具有的所有属性 然后从属性名称到其类
创建一个映射类似
{"property1":"pb.data.Property1", "property2":"pb.data.Property2"}
请记住,每个属性中的第一行是注释。有明确的方法吗?
答案 0 :(得分:0)
您可以使用inspect.getmembers获取所有属性值。希望下面的代码可以帮助你。
import inspect
class MyClass(object):
@property
def property1(self):
return 'pb.data.Property1'
@property
def property2(self):
return 'pb.data.Property2'
def get_attributes(self):
attributes = inspect.getmembers(self, predicate=lambda a: not(inspect.isroutine(a)))
return {d[0]:d[1] for d in attributes if not(d[0].startswith('__') and d[0].endswith('__'))}
MyClass().get_attributes()
输出 :{'property1': 'pb.data.Property1', 'property2': 'pb.data.Property2'}