码迷,mamicode.com
首页 > 编程语言 > 详细

python之面向对象1

时间:2016-06-25 12:12:49      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

虽然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()
View Code

三.类中内置的方法

  在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())
View Code

四、继承

    在Python中,一个类可以是其它类的子类,也可以是其它类的父类(跟其它语言不太相同的地方是Python是多继承的,也就是说一个子类可以有多个父类)。

 

python之面向对象1

标签:

原文地址:http://www.cnblogs.com/madq-py/p/5616059.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!