对类的理解
所谓的类,就我理解,是带有属性如身高、体重和方法如吃饭、睡觉等方法的一个模板。
下面是伪代码:
class 人:
身高 = 175
体重 = 64
皮肤 = yellow
吃饭( )
睡觉( )
打豆豆( )
根据这个类创建一个对象:
我 = 人( )
设置这个对象的属性:
我 . 身高 = 175
调用这个对象的方法:
我 . 吃饭( )
Python中的类
Python在2.x中,是有新式类和旧式类(经典类)之分。新式类是2.2之后引进。现在我们一般使用新式类。
旧式类:
>>> class AA:
... pass
...
实例化:
>>> aa = AA()
旧式类分析
>>> type(AA)
<type 'classobj'>
>>> aa.__class__
<class __main__.AA at 0x10ac3d9a8>
>>> type(aa)
<type 'instance'>
- type(AA):查看类AA的类型,返回的是'classobj'
- aa.class:aa是一个实例,也是一个对象,每个对象都有class属性,用于显示其类型。这里返回的结果是<class main.AA at 0x10ac3d9a8>,说明aa是AA的实例,并且类AA在内存中的地址是0x10ac3d9a8。
- type(aa):是要看实例aa的类型,结果是'instance',说明它的类型是一个实例。
aa.class和type(aa),都可以查看对象的类型,但是结果却不同,有些别扭。
在Python中,整数也属于对象,看如下例子:
>>> a = 7
>>> a.__class__
<type 'int'>
>>> type(a)
<type 'int'>
为何这里整数用两种方式查看就一样了呢,而旧式类返回就不一样。因此,就有了新式类。
新式类
>>> class BB(object):
... pass
...
>>> bb = BB()
>>> bb.__class__
<class '__main__.BB'>
>>> type(bb)
<class '__main__.BB'>
可以看到,新式类返回一致了。
不管是新式类还是旧式类,都可以查看对象类型,具体如下:
>>> print aa
<__main__.AA instance at 0x10ac69440>
>>> print bb
<__main__.BB object at 0x10ac63a50>