查看类、对象中属性、方法及其更改

现有Person类如下

class Person:name = '小白'def __init__(self,age): self.age = agedef hobby(self): print('coding')

__dict__的使用 作用:查看对象中属性及查看类中属性与方法
per = Person(20) print(per.__dict__) print(Person.__dict__)

执行结果如下:
{'age': 20} {'__module__': '__main__', 'name': '小白', '__init__': , 'hobby': , '__dict__': , '__weakref__': , '__doc__': None}

可以观察到per对象中只有age属性,没有name属性,这里per中的age是指可以更改的属性,name属性在对象per中是不可更改的
dir()的使用 作用:查看对象及类中的所有相关的属性与方法
per = Person(20) print(dir(per)) print(dir(Person))

执行结果如下:
['__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', 'hobby', 'name'] ['__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__', 'hobby', 'name']

__class__的使用 作用:查看类
per = Person(20) print(per.__class__)

执行结果:

setattr与getattr的使用 【查看类、对象中属性、方法及其更改】setattr作用:向对象中增加属性
getattr作用:查看对象中对应属性
per = Person(20) setattr(per,'facevalue',90) print(getattr(per,'facevalue')) print(per.__dict__)

执行结果:
90 {'age': 20, 'facevalue': 90}

__delattr__的使用 作用:删除对象中对应的属性
per = Person(20) per.sex = 'men' print(per.__dict__) per.__delattr__('sex') print(per.__dict__)

执行结果:
{'age': 20, 'sex': 'men'} {'age': 20}

    推荐阅读