python类和实例的一些属性
Frey May 17, 2018 [编程] #Python1.self和__init__()
self代表类的实例,如下:
= ,#类的属性
=#实例的属性
=
#-output:classa classb-访问类的属性
=
#-output:classa-通过实例访问类的属性
#-output:selfb-当实例和类都具有某属性时,输出实例属性
#output
,
当实例和类有相同的属性时,如何通过实例访问类的属性呢?
可以通过__class__访问
2.class
__class__是指实例所对应的类
# -*- coding: utf-8 -*-
=
=
#-output:<__main__.Test object at 0x055A1270>
#-output:<class '__main__.Test'>
=
#-output:<__main__.Test object at 0x055A1270>
#-output:<class '__main__.Test'>
#-output:selfa classa
通过__init__()可以实现对类的实例的统计
# -*- coding: utf-8 -*-
=0
+=1
=
=
输出为
1
2
3
每创建一个Test类的实例,Test.count都加1
3.dict
__dict__是一个字典,键是属性名,值为属性值。
类有自己的__dict__,类的实例也有自己的__dict__
# -*- coding: utf-8 -*-
=
=
=
输出为
{'__module__': '__main__', 'classa': 'classa', '__init__': <function Test.__init__ at 0x04D03468>, '__dict__': <attribute '__dict__' of 'Test' objects>, '__weakref__': <attribute '__weakref__' of 'Test' objects>, '__doc__': None}
{'selfb': 'selfb'}
可见类Test有classa属性以及一些其他属性
类Test的实例a只有self.b属性
4.len(self)函数
返回元素个数,实现len()方法。即类实现了__len__()函数就可以使用len()函数
5.getitem(self,key)
实现字典一样的功能,当类的实例对象(假设为P)调用P[key]时,调用此函数返回。