例如,以下是一个类:
class Fruits(object):
name = 'Fruits'
short_description = 'Fruits class'
long_description = 'Fruits class that takes in a list of fruits'
def __init__(self,fruits_lst):
self.fruits_lst = fruits_lst
self.total = len(fruits_lst)
我想检索一个类变量列表,不包括任何类实例变量。也就是说,列表将是[“名称”、“短描述”、“长描述”]。
我该怎么做?
我意识到我可以部署它来提取类的信息:
fruits = Fruits(['Apples','Bananas','Oranges'])
dir(fruits)
['__class__',
'__delattr__',
'__dict__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__gt__',
'__hash__',
'__init__',
'__init_subclass__',
'__le__',
'__lt__',
'__module__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__',
'__weakref__',
'fruits_lst',
'long_description',
'name',
'short_description',
'total']
但是,我怎样才能提取出我想要的信息呢?
非常感谢。
更新:
我刚刚发现,我可以通过将dir应用于类本身而不是类的实例来实现这一点:
class_variables = [var for var in dir(Fruits) if not var.startswith('__')]
class_variables
['long_description', 'name', 'short_description']
所以,这是一个“解决方案”。然而,对于我所拥有的用例,我只能访问类实例,而不能访问类本身。那么,有没有一种方法可以通过类实例直接提取这些信息,而不必通过列表理解进行过滤?
非常感谢。