Python中的常见特殊方法或属性—— dir方法和dict属性

一、__dir__方法

对象的__dir__()方法的作用是列出对象内部所有的属性名和方法名,该方法将会返回包含所有属性或方法名的序列。

如果程序对某个对象执行dir(obj)函数,实际上就是将该对象的__dir__()方法返回值进行排序,然后包装成列表。

栗子如下:

 1 #coding=utf-8
 2 class Item():
 3     def __init__(self,name,price):
 4         self.name=name
 5         self.price=price
 6     def info():
 7         pass
 8 #创建一个Item对象,将之赋值给it变量
 9 it = Item('鼠标',29.8)
10 #打印所有属性(包含方法)组成的列表
11 print(it.__dir__())
12 #打印所有属性(包含方法)组成的列表,已排序
13 print(dir(it))

控制台打印如下:

解释:可以看到程序不仅会输出我们定义的name、price、info三个属性和方法,而且还有大量的系统内置的属性和方法,比如前两篇所说到的__repr__和__del__方法。

二、__dict__属性

__dict__属性用于查看对象内部存储的所有属性名和属性值组成的字典,通常程序直接使用该属性即可。程序使用__dict__属性既可查看对象的所有内部状态,也可以通过字典语法来访问或修改指定属性的值。

栗子如下:

 1 #coding=utf-8
 2 class Item():
 3     def __init__(self,name,price):
 4         self.name=name
 5         self.price=price
 6     def info():
 7         pass
 8 #创建一个Item对象,将之赋值给it变量
 9 it = Item('鼠标',29.8)
10 print(it.__dict__)
11 print(it.__dict__['name'])
12 print(it.__dict__['price'])
13 it.__dict__['name'] = '键盘'
14 it.__dict__['price'] = 39.9
15 print(it.name)
16 print(it.price)

控制台打印如下:

解释:代码第10行直接输出对象的__dict__属性,这样将会直接输出该对象内部存储的所有属性名和属性值组成的dict对象;接下来的两行单独打印了这两个属性值;第13、14行通过对__dict__属性对name和price两个属性赋值,然后再次打印就出现了新的属性值。

原文地址:https://www.cnblogs.com/tizer/p/11200596.html