获取 Python 中的类属性列表

在 Python 中获取类属性列表

Get a list of class attributes in Python

要获取类的属性列表:

  1. 使用该dir()函数获取类属性名称的列表。
  2. 使用列表理解来过滤掉以双下划线和方法开头的属性。
  3. 该列表将只包含类的属性。
主程序
class Employee(): # 👇️ class variables first = 'one' second = 'two' def __init__(self, id, name, salary): # 👇️ instance variables self.id = id self.name = name self.salary = salary bob = Employee(1, 'bobbyhadz', 100) # ✅ get list of class attributes class_variables = [attribute for attribute in dir(Employee) if not attribute.startswith('__') and not callable(getattr(Employee, attribute)) ] print(class_variables) # 👉️ ['first', 'second'] # ----------------------------------------------------- # ✅ get list of instance attributes result = list(bob.__dict__.keys()) print(result) # 👉️ ['id', 'name', 'salary'] print(bob.__dict__) # 👉️ {'id': 1, 'name': 'bobbyhadz', 'salary': 100}

dir函数返回类属性名称的列表,并递归地返回其基类的属性名称。

主程序
class Employee(): # 👇️ class variables first = 'one' second = 'two' def __init__(self, id, name, salary): # 👇️ instance variables self.id = id self.name = name self.salary = salary # ['__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__', 'first', 'second'] print(dir(Employee)) class_variables = [attribute for attribute in dir(Employee) if not attribute.startswith('__') and not callable(getattr(Employee, attribute)) ] print(class_variables) # 👉️ ['first', 'second']

下一步是过滤掉所有以两个下划线开头的属性和所有方法。

我们使用列表理解来迭代名称列表。

列表推导用于对每个元素执行某些操作或选择满足条件的元素子集。

调用
函数将一个对象作为参数,
True如果该对象看起来可调用则返回,否则False返回。

如果需要获取类变量和相应值的字典,则可以使用字典理解。

主程序
class Employee(): first = 'one' second = 'two' def __init__(self, id, name, salary): self.id = id self.name = name self.salary = salary result = {key: value for key, value in Employee.__dict__.items( ) if not key.startswith('__') and not callable(key)} print(result) # 👉️ {'first': 'one', 'second': 'two'}

字典理解与列表理解非常相似。

他们对字典中的每个键值对执行一些操作,或者选择满足条件的键值对的子集。

__dict__属性返回一个包含对象的属性和值的字典。

就像前面的例子一样,我们必须过滤掉以两个下划线和方法开头的键。

如果您需要获取实例的属性列表,请使用attribute。 __dict__
主程序
class Employee(): # 👇️ class variables first = 'one' second = 'two' def __init__(self, id, name, salary): # 👇️ instance variables self.id = id self.name = name self.salary = salary bob = Employee(1, 'bobbyhadz', 100) result = list(bob.__dict__.keys()) print(result) # 👉️ ['id', 'name', 'salary'] print(bob.__dict__) # 👉️ {'id': 1, 'name': 'bobbyhadz', 'salary': 100}

您可以使用该dict.keys()方法仅获取字典的键。

dict.keys方法返回字典键的
新视图。

最后一步是使用list()该类将视图转换为列表。