在 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__
直接使用属性来更明确。