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

Python面向对象编程

时间:2016-02-22 15:11:16      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:

一、什么是面向对象

1、面向对象编程(OOP,Object Oriented Programming)
OOP三个主要的特征:数据封装、继承和派生、多态。
所有的程序是由一定的属性和行为对象组成的,不同的对象的访问通过函数调用来完成,对象间所有的交流都是通过方法调用,通过对封装对象数据,提高复用率。

如果有什么问题还请大家积极指出。

二、创建类和对象

class Role (object):    #object是父类,继承父类
    def __init__(self,name,role,weapon,life_value):     #函数在class里叫做方法
        self.name = name    #成员变量,self 代表传进来的name,在整个类都可以使用这个变量,把一个局部变量变为了全局变量
        self.role = role
        self.weapon = weapon
        self.life_val = life_value
 
    def buy_weapon(self,weapon):
        print("[%s] is buying [%s]" % (self.name,weapon))
        self.weapon = weapon
 
# 把一个抽象的类变成一个具体的过程叫实例化
p1 = Role("Tom",‘Police‘,‘Desert Eagle‘,90)     #Role(p1,"Tom",‘Police‘,‘Desert Eagle‘,90)
t1 = Role("Stanley",‘Terrorist‘,‘Glock‘,100)    #Role(t1,"Stanley",‘Terrorist‘,‘b11‘,100)
print("t1‘s weapon was [%s] before" % t1.weapon)
print("=".center(40,‘=‘))
 
t1.buy_weapon(‘AK47‘)    #转换为Role.buy_weapon(t1,‘AK47‘)
print("t1‘s weapon is [%s] now" % t1.weapon)

Result:
t1‘s weapon was [Glock] before
========================================
[Stanley] is buying [AK47]
t1‘s weapon is [AK47] now

这段代码是基本的面向对象编程的思想,其中class是关键字,定义一个类,其名称为Role,这个类继承了Python的父类,名为object。在类的下面可以看到有很多函数的定义,但是在class中,函数被称为方法,所以这里暂时在一个名为Role类的下面有__init__和buy_weapon方法。

第一个方法__init__是初始化构造方法,构造方法的第一个参数永远是self,表示这个类的对象本身,真正构造对象时,self这个参数不用写,python编译器会自己加上去,构造方法的作用就是对self对象进行赋值,如下面传进来的name赋给self.name,这么做的目的是因为在class中,每个方法依旧是要遵循函数规则的,在函数下面每个变量都是局部变量,在其他函数中并不能相互调用,如此做就把一个局部变量变为全局变量。

第二个方法除了编译器会自己加上去的self参数外,weapon参数接收传入的变量,打印调用的参数。在print之后self.name含义是将调用者的name赋值给self。

接下来要对p1和t1进行实例化,这是将一个抽象的类变成一个具体的过程,生成了p1和t1两个角色。t1 = Role("Stanley",‘Terrorist‘,‘Glock‘,100),Python解释器会将此转换为Role(t1,"Stanley",‘Terrorist‘,‘b11‘,100),这里通过解释器转换后的t1其实就是self。

现在t1角色进行购买行为,t1.buy_weapon(‘AK47‘),Python解释器会将此转换为Role.buy_weapon(t1,‘AK47‘),如上所述此时的t1就是self,也可理解为将t1传入__init__初始化构造方法,就可直接self.name(等价于t1.name)获取到name的变量了(Stanley)。


三、封装

 

四、继承

 

五、多态

Python面向对象编程

标签:

原文地址:http://www.cnblogs.com/stanley-liu310/p/5206847.html

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