【python】实例属性的显示方法-dir、__dict__
2018-02-28 11:07
555 查看
在测试实例的属性时,产生过一个误解。
其中dir(a)打印出的内容为:['doc', 'module', 'name', 'printest']
其中a.dict打印出的内容为:{}
之前误以为dir(a)为实例a的已有属性,实际dir的含义是:它返回一个列表,包含所有能找到的属性的名字,即返回类及其子类的属性、方法列表。比如a的类是Test,name实际是类属性。
而dict的含义是:这个属性就是将对象内的属性和值用字典的方式显示出来。注意此处说的是对象,此时的对象是a,而实例a本身是没有任何属性的,所以打出来是{}。(可以使用a.name访问是由于向上查找的原因)
比如给a设置属性后,再查看两个函数的打印。
打印输出是这样的:
['doc', 'init', 'module', 'firstname', 'lastname', 'name', 'printest']
{'lastname': 'tttt', 'firstname': 'hhh'}
可以看到此时已经有了实例属性。
class Test(): name = 'python' def printest(): print 'Test' a = Test() print dir(a) print a.__dict__
其中dir(a)打印出的内容为:['doc', 'module', 'name', 'printest']
其中a.dict打印出的内容为:{}
之前误以为dir(a)为实例a的已有属性,实际dir的含义是:它返回一个列表,包含所有能找到的属性的名字,即返回类及其子类的属性、方法列表。比如a的类是Test,name实际是类属性。
而dict的含义是:这个属性就是将对象内的属性和值用字典的方式显示出来。注意此处说的是对象,此时的对象是a,而实例a本身是没有任何属性的,所以打出来是{}。(可以使用a.name访问是由于向上查找的原因)
比如给a设置属性后,再查看两个函数的打印。
class Test(): name = 'python' def __init__(self): self.lastname = 'tttt' def printest(): print 'Test' a = Test() a.firstname = 'hhh' print dir(a) print a.__dict__
打印输出是这样的:
['doc', 'init', 'module', 'firstname', 'lastname', 'name', 'printest']
{'lastname': 'tttt', 'firstname': 'hhh'}
可以看到此时已经有了实例属性。
相关文章推荐
- 【再回首Python之美】【类】通过dir()和__dict__查看一个类的属性和一个实例对象的属性
- python私有属性和方法实例分析
- [Python进阶-3]面向对象,类,实例,属性,方法,类属性,类方法,内部属性
- Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法
- python通过__slots__限制类实例动态的增加属性、方法
- Python学习:给类的实例绑定属性和方法
- Python中字典(dict)和列表(list)的排序方法实例
- Python3基础 描述符类与自制property方法 __get__,__set__,__delete__方法 讲一个特殊的类的实例指派给另一个类的属性
- Python复数属性和方法操作实例
- python中pygame针对游戏窗口的显示方法实例分析(附源码)
- python的类变量与实例变量以及__dict__属性
- 使用console.dir 快速概览Node.JS中对象实例的属性和方法
- python 7-6 如何使用描述符对实例属性做类型检查,分别实现set,方法,在set内使用isinstance做类型检查
- python的类变量与实例变量以及__dict__属性
- python面向对象编程(2)—— 实例属性,类属性,类方法,静态方法
- python 类属性 实例属性 类方法 实例方法 静态方法(转载)
- python的类变量与实例变量以及__dict__属性
- Python中字典(dict)和列表(list)的排序方法实例
- Python 进阶_OOP 面向对象编程_实例属性和方法
- python私有属性和方法实例分析