📅  最后修改于: 2023-12-03 14:46:16.108000             🧑  作者: Mango
在 Python 中,可以通过访问对象的属性来获取其相关信息。本文将介绍如何显示对象的属性以及相关知识点。
dir()
函数可以显示任何 Python 对象的属性及方法列表。可以使用它来查看对象的所有属性和方法。
class Person:
age = 20
def __init__(self, name):
self.name = name
p = Person('Alice')
print(dir(p))
输出结果为:
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'age', 'name']
vars()
函数可以返回包含对象的属性和属性值的字典。可以使用它来查看对象的属性及其对应的值。
class Person:
age = 20
def __init__(self, name):
self.name = name
p = Person('Alice')
print(vars(p))
输出结果为:
{'name': 'Alice'}
在上面的示例中,age
是类变量,name
是实例变量。类变量是在类定义时创建的,并且该类的所有实例都可以访问它。实例变量是在实例化类时创建的,每个实例都有自己的副本。
在 Python 中,有两种方法可以通过方法来访问实例变量:@property
和 setter
方法。@property
装饰器用于将方法转换为属性,而 setter
方法用于设置属性的值。
class Person:
def __init__(self, name):
self._name = name
@property
def name(self):
print('Getting name...')
return self._name
@name.setter
def name(self, value):
print('Setting name...')
self._name = value
p = Person('Alice')
print(p.name)
p.name = 'Bob'
print(p.name)
输出结果为:
Getting name...
Alice
Setting name...
Getting name...
Bob
Python 中的每个对象都有一个 __dir__()
方法和一个 __dict__()
方法。__dir__()
方法返回包含对象中定义的属性和方法的列表,而 __dict__()
方法返回包含对象中定义的属性及其值的字典。
class Person:
age = 20
def __init__(self, name):
self.name = name
p = Person('Alice')
print(p.__dir__())
print(p.__dict__)
输出结果为:
['__repr__', '__hash__', '__str__', '__getattribute__', '__setattr__', '__delattr__', '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__new__', '__init__', 'age', '__dict__', '__weakref__', 'name']
{'name': 'Alice'}
Python 中可以通过 dir()
和 vars()
函数来显示对象的属性和属性值。此外,了解实例变量和类变量、@property
和 setter
方法、__dir__()
和 __dict__()
方法等相关知识点对深入理解 Python 对象的属性和方法非常有帮助。