虽然Python是解释性语言,但是它是面向对象的,能够进行对象编程。下面就来了解一下如何在Python中进行对象编程。
一.如何定义一个类
在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法。
类是对现实世界中一些事物的封装,定义一个类可以采用下面的方式来定义:
1 class className: 2 block
注意类名后面有个冒号,在block块里面就可以定义属性和方法了。当一个类定义完之后,就产生了一个类对象。类对象支持两种操作:引用和实例化。引用操 作是通过类对象去调用类中的属性或者方法,而实例化是产生出一个类对象的实例,称作实例对象。比如定义了一个people类:
1 class people: 2 name = ‘jack‘ #定义了一个属性 3 #定义了一个方法 4 def printName(self): 5 print self.name
people类定义完成之后就产生了一个全局的类对象,可以通过类对象来访问类中的属性和方法了。当通过people.name(至于为什么可以直 接这样访问属性后面再解释,这里只要理解类对象这个概念就行了)来访问时,people.name中的people称为类对象,我隐约的记得Java中和这个是不同的。当然还可以进行实例化操作,p=people( ),这样就产生了一个people的实例对象,此时也可以通过实例对象p来访问属性或者方法了(p.name).
理解了类、类对象和实例对象的区别之后,我们来了解一下Python中属性、方法和函数的区别。
在上面代码中注释的很清楚了,name是一个属性,printName( )是一个方法,与某个对象进行绑定的函数称作为方法。一般在类里面定义的函数与类对象或者实例对象绑定了,所以称作为方法;而在类外定义的函数一般没有同对象进行绑定,就称为函数。
二.方法
在类中可以根据需要定义一些方法,定义方法采用def关键字,在类中定义的方法至少会有一个参数,,一般以名为‘self‘的变量作为该参数(用其他名称也可以),而且需要作为第一个参数。下面看个例子:
1 class people: 2 __name = ‘jack‘ 3 __age = 12 4 5 def getName(self): 6 return self.__name 7 def getAge(self): 8 return self.__age 9 10 p = people() 11 print p.getName(),p.getAge()
三.类中内置的方法
在Python中有一些内置的方法,这些方法命名都有比较特殊的地方(其方法名以2个下划线开始然后以2个下划线结束)。类中最常用的就是构造方法(封装)。
构造方法__init__(self,....)在生成对象时调用,可以用来进行一些初始化操作,不需要显示去调用,系统会默认去执行。构造方法支持重载,如果用户自己没有重新定义构造方法,系统就自动执行默认的构造方法,看下面这个示例:
1 class first_test: 2 def __init__(self,name,obj): 3 self.name = name 4 self.obj = obj 5 def fetch(self): 6 print(self.obj.age) 7 8 class second_test: 9 def __init__(self,name,age): 10 self.name = name 11 self.age = age 12 def show(self): 13 print(self.age) 14 return True 15 16 class three_test: 17 def __init__(self,aa): 18 self.aa = aa 19 def show(self): 20 print(self.aa.obj.age) 21 c1 = second_test(‘alex‘,18) 22 c2 = first_test(‘madq‘,c1) 23 c3 = three_test(c2) 24 print(c3.aa.obj.name) 25 print(c3.aa.obj.show())
四、继承
在Python中,一个类可以是其它类的子类,也可以是其它类的父类(跟其它语言不太相同的地方是Python是多继承的,也就是说一个子类可以有多个父类)。