【python】实例属性的显示方法-dir、__dict__

本文详细解析了Python中dir()函数与__dict__属性的不同之处,通过实例展示了两者如何反映出类及其实例的属性和方法,并介绍了设置实例属性后的变化。

在测试实例的属性时,产生过一个误解。

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'}
可以看到此时已经有了实例属性。

 

出处:http://blog.51cto.com/guoeric/2073816

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值