【Python学习】面向对象的编程


本文摘自php中文网,作者little bottle,侵删。

面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。

python和java都是面向对象的语言。面向对象编程的特点数据封装、继承和多态
1.类和实例
面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。
在python中,定义类同样也是使用class关键字,class后面紧跟着的是类名,需要开头大写,之后的括号里表示的是继承的哪个类,即它的父类。

1

2

class Student(object):

    pass

我们可以自由地给这个变量绑定属性

1

2

3

>>>nick.name = 'Liu Ling Hao'

>>>nick.name

'Liu Ling Hao'

而之后定义的不同的函数则是方法。总结来说对象=属性+方法
由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。此时就需要用到比较特殊的__init__方法。(int 前后各有两个下划线)
__init__方法的第一个参数永远是self,表示创建的实例本身。

1

2

3

4

5

6

7

8

9

class Student(object):

    def __init__(self, name, score):

        self.name = name

        self.score = scor

>>> bart = Student('Bart Simpson', 59)

>>> bart.name

'Bart Simpson'

>>> bart.score

59

当有了__init__方法之后,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数
2.封装,继承和多态
面向对象编程的一个重要特点就是数据封装。
就像上面例子中的name和score,我们可以直接在类的内部定义的函数去访问,,比如可以添加一个数据或者对于一个列表进行排序,我们可以实现,但是我们并不知道它的内部是通过如何调节而实现的。

当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。

继承的好处就是获得了父类的全部功能,对于子类而言,可以在父类的基础上接着写,更加方便

1

2

3

4

5

6

7

class Person(object):

    def idea(self):

        print('study is happy')class Liu(Person):

    pass

liu =Liu()liu.idea

 

study is happy

当然子类如果有和父类同样的方法时会自动覆盖掉父类的

多态:不同对象对同一方法响应不同的行动

1

2

3

4

5

6

7

8

9

10

11

12

>>>class Nick1:

    def name(self):

             print("我是1")

>>>class Nick2:

    def name(self):

             print("我是2")

>>>a = Nick1()

>>>b = Nick2()

>>>a.name

我是1

>>>b.name

我是2

使用的函数名虽然一样但是实现并不一样。

1

2

3

4

5

6

7

8

9

def run(animal):

    animal.run()

    animal.run()

    >>> run(Animal())

Animal is running...

Animal is running...

>>> run_twice(Dog())

Dog is running...

Dog is running...

多态的好处就是,当我们需要传入Dog或者其它动物时,我们只需要接收Animal类型就可以了,因为Dog都是Animal类型,然后,按照Animal类型进行操作即可。由于Animal类型有run()方法,因此,传入的任意类型,只要是Animal类或者子类,就会自动调用实际类型的run()方法,这就是多态。

【推荐课程:Python视频教程】

以上就是【Python学习】面向对象的编程的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python简介及入门指导

Python描述符有什么作用

Python输入十个数如何输出最大值

Python中flag什么意思

geany中怎么配置Python

Python怎么表示八进制

Python里break怎么用

如何用Python画简单的动物

知道Python 为什么要有 pass 语句?

Python中列表的用法是什么

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...