在 Python 中打印对象的属性

在 Python 中打印对象的属性

Print an object’s attributes in Python

使用__dict__attribute 打印对象的属性,例如
print(my_object.__dict__). __dict__属性返回一个包含对象的属性和值的字典。

主程序
class Employee(): def __init__(self, id, name, salary): self.id = id self.name = name self.salary = salary bob = Employee(1, 'bobbyhadz', 100) # ✅ print object attributes and values attributes_and_values = bob.__dict__ # 👇️ {'id': 1, 'name': 'bobbyhadz', 'salary': 100} print(attributes_and_values) # ------------------------------------------- # ✅ print object attributes only_attributes = list(bob.__dict__.keys()) print(only_attributes) # 👉️ ['id', 'name', 'salary'] # ------------------------------------------- # ✅ print object values only_values = list(bob.__dict__.values()) print(only_values) # 👉️ [1, 'bobbyhadz', 100] # ------------------------------------------- # ✅ print list of names of class's attributes # 👇️ ['__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__'] print(dir(Employee))

我们使用__dict__属性来打印对象的属性。

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

如果您只需要对象的属性或值,则可以使用dict.keys()和方法。dict.values()

如果您需要对象属性名称的列表,请使用该dir()
函数。

主程序
class Employee(): def __init__(self, id, name, salary): # 👇️ instance variables self.id = id self.name = name self.salary = salary bob = Employee(1, 'bobbyhadz', 100) # 👇️ ['__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__', 'id', 'name', 'salary'] print(dir(bob))

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

如果需要漂亮地打印对象的属性,请使用pprint()
方法。

主程序
from pprint import pprint class Employee(): def __init__(self, id, name, salary): # 👇️ instance variables self.id = id self.name = name self.salary = salary bob = Employee(1, 'bobbyhadz', 100) # ['__class__', # '__delattr__', # '__dict__', # '__dir__', # '__doc__', # ... # ] pprint(dir(bob))

pprint.pprint方法打印对象
的格式化表示。

如果需要将对象的属性格式化为字符串,请使用该
str.join()方法和格式化的字符串文字。

主程序
class Employee(): def __init__(self, id, name, salary): self.id = id self.name = name self.salary = salary bob = Employee(1, 'bobbyhadz', 100) # # 👇️ {'id': 1, 'name': 'bobbyhadz', 'salary': 100} print(bob.__dict__.items()) result = ', '.join(f'{key}={str(value)}' for key, value in bob.__dict__.items()) print(result) # 👉️ id=1, name=bobbyhadz, salary=100

str.join方法将一个可迭代对象作为参数并返回一个字符串,该字符串是可迭代对象中字符串的串联。

调用该方法的字符串用作元素之间的分隔符。

格式化字符串文字 (f-strings) 让我们通过在字符串前加上f.

主程序
var1 = 'bobby' var2 = 'hadz' result = f'{var1}{var2}' print(result) # 👉️ bobbyhadz

确保将表达式括在大括号 –{expression}中。

或者,您可以使用该vars()功能。

使用 vars() 打印对象的属性

使用该vars()函数打印对象的属性,例如
print(vars(my_object)). vars()函数返回一个包含对象的属性和值的字典。

主程序
class Employee(): def __init__(self, id, name, salary): self.id = id self.name = name self.salary = salary bob = Employee(1, 'bobbyhadz', 100) # 👇️ {'id': 1, 'name': 'bobbyhadz', 'salary': 100} print(vars(bob)) only_attributes = list(vars(bob).keys()) print(only_attributes) # 👉️ ['id', 'name', 'salary'] only_values = list(vars(bob).values()) print(only_values) # 👉️ [1, 'bobbyhadz', 100]

vars函数接受一个对象并返回给定模块、类、实例或任何其他具有属性__dict__对象的__dict__属性。

如果提供的对象没有
属性,
vars()函数将引发 a 。TypeError__dict__

您选择哪种方法是个人喜好的问题。我会
__dict__直接使用属性来更明确。

发表评论