如何检索对象方法的详细语句? 假设一个类:
class Car:
def __init__(self,make, model,year):
self.make = make
self.model = model
self.year = year
def get_descriptive_name(self):
return self.make + ' ' + self.model + ' ' + str(self.year)
将其复制到控制台并创建一个实例
my_new_car = Car('Mars_Rocket','MR5',2017)
检索信息:
In [52]: vars(my_new_car)
Out[52]: {'make': 'Mars_Rocket', 'model': 'MR5', 'year': 2017}
然而,我想要的是:
{'make': 'Mars_Rocket', 'model': 'MR5', 'year': 2017 \
'get_descriptive_name':'self.make + ' ' + self.model + ' ' + str(self.year)'}
还有一步,我尝试dir()
:
In [53]: attrs = [ i for i in dir(my_new_car) if not i.startswith('__')]
In [54]: attrs
Out[54]: ['get_descriptive_name', 'make', 'model', 'year']
In [57]: {attr:getattr(my_new_car, attr) for attr in attrs }
Out[57]:
{'get_descriptive_name': <bound method Car.get_descriptive_name of <__main__.Car object at 0x10517deb8>>,
'make': 'Mars_Rocket',
'model': 'MR5',
'year': 2017}
尽管获得了该方法,但仍会卸载详细的语句
如何在控制台的交互模式下获取对象方法的语句块
制作一个使用
inspect.getsourcelines
获取方法内容的小助手:这假设传递了一个实例,然后遍历对象中的名称,如果它们不是
Method
类型,则只返回它们的名称和值。如果是,它使用getsourcelines
,删除第一行(函数def)并去除缩进(可能不是一个好主意)它产生元组,您可以将元组输入
dict
:它获取方法中的所有内容,
return
也包括在内(它是一个语句)相关问题 更多 >
编程相关推荐