在测试实例的属性时,产生过一个误解。
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'}
可以看到此时已经有了实例属性。
點(diǎn)擊查看更多內(nèi)容
為 TA 點(diǎn)贊
評(píng)論
評(píng)論
共同學(xué)習(xí),寫下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦