在 Python 中获取对象的所有属性
Get all attributes of an Object in Python
使用该dir()
函数获取对象的所有属性,例如
print(dir(object))
. 该dir
函数将返回所提供对象的有效属性列表。
主程序
class Person(): def __init__(self, first, last, age): self.first = first self.last = last self.age = age bobby = Person('bobby', 'hadz', 30) # 👇️ {'first': 'bobby', 'last': 'hadz', 'age': 30} print(bobby.__dict__) # ------------------------------- attributes = list(bobby.__dict__.keys()) print(attributes) # 👉️ ['first', 'last', 'age'] # ------------------------------- # ['__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__', 'age', 'first', 'last'] print(dir(bobby))
dir函数接受一个对象并返回一个包含对象属性的列表。
如果将一个类传递给该函数,它会返回该类属性名称的列表,并递归地返回其基类属性的列表。
如果需要漂亮地打印对象的属性,请使用pprint()
方法。
主程序
from pprint import pprint class Person(): def __init__(self, first, last, age): self.first = first self.last = last self.age = age bobby = Person('bobby', 'hadz', 30) # ['__class__', # '__delattr__', # '__dict__', # '__dir__', # '__doc__', # ... # ] pprint(dir(bobby))
pprint.pprint方法打印对象
的格式化表示。
如果您需要获取每个属性及其值,请使用该getattr()
函数。
主程序
class Person(): def __init__(self, first, last, age): self.first = first self.last = last self.age = age bobby = Person('bobby', 'hadz', 30) for attribute in dir(bobby): print(attribute, getattr(bobby, attribute))
getattr函数返回对象提供的属性的值。
该函数将对象、属性名称和对象上不存在该属性时的默认值作为参数。
如果需要获取对象的属性和值,请使用属性。
__dict__
主程序
class Person(): def __init__(self, first, last, age): self.first = first self.last = last self.age = age bobby = Person('bobby', 'hadz', 30) # 👇️ {'first': 'bobby', 'last': 'hadz', 'age': 30} print(bobby.__dict__) # ------------------------------- attributes = list(bobby.__dict__.keys()) print(attributes) # 👉️ ['first', 'last', 'age'] # ------------------------------- values = list(bobby.__dict__.values()) print(values) # 👉️ ['bobby', 'hadz', 30]
该
__dict__
属性返回一个包含对象的属性和值的字典。如果您只需要对象的属性或值,则可以使用dict.keys()
和方法。dict.values()
如果需要将对象的属性格式化为字符串,请使用该
str.join()
方法和格式化的字符串文字。
主程序
class Person(): def __init__(self, first, last, age): self.first = first self.last = last self.age = age bobby = Person('bobby', 'hadz', 30) # 👇️ dict_items([('first', 'bobby'), ('last', 'hadz'), ('age', 30)]) print(bobby.__dict__.items()) result = ', '.join(f'{key}={str(value)}' for key, value in bobby.__dict__.items()) print(result) # 👉️ first=bobby, last=hadz, age=30
str.join方法将一个可迭代对象作为参数并返回一个字符串,该字符串是可迭代对象中字符串的串联。
调用该方法的字符串用作元素之间的分隔符。
格式化字符串文字 (f-strings) 让我们通过在字符串前加上f
.
主程序
var1 = 'bobby' var2 = 'hadz' result = f'{var1}{var2}' print(result) # 👉️ bobbyhadz
确保将表达式括在大括号 –{expression}
中。