|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 和vvv 于 2017-6-20 12:20 编辑
09 Python面向对象编程
一、面向对象编程概述
面向对象编程即OOP编程,区别于面向过程编程,面向对象编程比较适合开发大项目,会以更接近人类思维的角度去写程序。
二、类和对象
类:具有某种特征的事物的集合(群体)。
对象:群体(类)里面的个体。
类是抽象的,对象是具体的。
类的定义:如:其中pass表示占位符,不代表任何操作,只是占据位置。- >>> Student
- <class '__main__.Student'>
- >>> s = Student()
- >>> s
- <__main__.Student object at 0x000002B9F35B0E10>
- >>>
复制代码 s = Student()是实例化一个类,也就是说,现在s就是一个对象(类的实例就是对象)。
三、构造函数
类在实例化时自动首先触发的方法。其有固定的名字:__init__(self,参数)。在类中的方法必须加上self参数。- class cl:
- def __init__(self):
- print("I am cl self")
复制代码 结果:- >>> c = cl()
- I am cl self
- >>>
复制代码
构造函数的实际意义:初始化。
给类加上参数,实际上就是在构造方法中加上参数。- class cl1:
- def __init__(self,name,job):
- print("my name is "+name+",my job is "+job)
复制代码 结果:- >>> b = cl1()
- Traceback (most recent call last):
- File "<pyshell#9>", line 1, in <module>
- b = cl1()
- TypeError: __init__() missing 2 required positional arguments: 'name' and 'job'
- >>>
复制代码 类实例化时,没有给定参数,报错。- ======== RESTART: F:\Python\procedure\if.py ========
- >>> b = cl1("xiaoming","teacher")
- my name is xiaoming,my job is teacher
- >>> b1 = cl1("he","python")
- my name is he,my job is python
- >>>
复制代码 其中b,b1属于同一个类,但是不同的个体。
四、属性和方法
属性:静态的特征,如头发、手臂等。类里面的变量:self.属性名- class cl2:
- def __init__(self,name,job):
- self.myname = name
- self.myjob = job
复制代码- ======== RESTART: F:\Python\procedure\if.py ========
- >>> s = cl2("X","teacher")
- >>> s.myname
- 'X'
- >>> s.myjob
- 'teacher'
- >>>
复制代码
方法:动态的特征,如唱歌、写字等。类里面的函数:def 方法名(self,参数)- class cl3:
- def myf1(self):
- print("hello")
复制代码 结果:- >>>
- ======== RESTART: F:\Python\procedure\if.py ========
- >>> c = cl3()
- >>> c.myf1()
- hello
- >>>
复制代码 可以给方法加上参数:- class cl3:
- def myf1(self,name):
- print("hello "+name)
复制代码- >>>
- ======== RESTART: F:\Python\procedure\if.py ========
- >>> c = cl3()
- >>> c.myf1("tian")
- hello tian
- >>>
复制代码
与构造方法一起使用:- class cl3:
- def __init__(self,name):
- self.myname = name
- def myf1(self):
- print("hello "+self.myname)
复制代码 结果:- >>>
- ======== RESTART: F:\Python\procedure\if.py ========
- >>> c = cl3("Men")
- >>> c.myf1()
- hello Men
- >>>
复制代码
五、继承与重载
继承:把一个类或者多个类(基类)的特征拿过来。重载:在子类(派生类)里面对继承过来的特征重新定义。
父类:基类。
子类:派生类。
1.继承:包含单继承和多继承。
(1)
- #父亲类(基类)
- class father():
- def speak(self):
- print("I can speak!")
- #单继承:class 子类(父类)
- class son(father):
- pass
复制代码 结果:- >>>
- ======== RESTART: F:\Python\procedure\if.py ========
- >>> s = son()
- >>> s.speak()
- I can speak!
- >>>
复制代码 (2)
- #父亲类(基类)
- class father():
- def speak(self):
- print("I can speak!")
- #母亲类
- class mother():
- def write(self):
- print("I can write!")
- #女儿类:多继承
- class daughter(father,mother):
- def listen(self):
- print("I can listen!")
复制代码 结果:- >>>
- ======== RESTART: F:\Python\procedure\if.py ========
- >>>
- ======== RESTART: F:\Python\procedure\if.py ========
- >>> d = daughter()
- >>> d.speak()
- I can speak!
- >>> d.write()
- I can write!
- >>> d.listen()
- I can listen!
- >>>
复制代码 2.重载(重写)- #父亲类(基类)
- class father():
- def speak(self):
- print("I can speak!")
- #重写(重载)
- class son2(father):
- def speak(self):
- print("I can speak 2!")
复制代码 结果:- >>>
- ======== RESTART: F:\Python\procedure\if.py ========
- >>> s2 = son2()
- >>> s2.speak()
- I can speak 2!
- >>>
复制代码
|
评分
-
查看全部评分
|