Python面向对象的编程

面向对象编程关注对象和消息传递,而非执行流程。类是创建实例的模板,包含属性和方法。实例可以绑定属性,实现数据封装和访问限制。静态语言如Java要求严格类型匹配,而Python等动态语言更灵活,允许对象只要有特定方法即可调用。
摘要由CSDN通过智能技术生成

一、面向对象编程

Define : 把对象作为程序的基本单元,对象既有数据又有操作数据的函数。

面向过程的程序设计:把程序看作一系列命令的集合,一组函数的顺序执行。

面向对象的程序设计: 把计算机程序看作一组对象的集合,每个对象都可以接收其他对象发过来的消息,并进行处理。

考虑的不是程序的执行流程, 而是处理的对象 student,这个对象包含什么(属性),对这个对象的操作(print)

二、类(Class)和实例(Instance)

1.类的定义

Student 是类名— 通常大写开头

object 是表示继承的类,如果没有,一般使用 object

在 python 3 中,括号没不加 object,也会默认 继承 object 类

liu 就是差 创建的一个实例 存放在 0x这个地址里面
Student 是一个 类 claas

3.绑定属性

可以在实例中绑定属性

由于类的作用就是一个模版,对于一些共有的属性可以写入类之中。 例如定义一个鸟的类,共性就是会飞,这个属性就可以写进,而这个 通过 init 实现

第一个参数永远是 self

self 之后加入其他的参数,在定义类的时候需要传入,self 不需要传入

3. 数据封装

由于 Student 实例 本身就包含了 name 和 score 等数据,我们访问这些数据,可以直接在类的内部定义访问数据的函数

只需要调用,不需要知道内部的实现细节,数据和逻辑就被封装起来了

4. 访问限制

1. 限制访问

2. 外部获取属性— get

3. 外部修改属性 — set

4. 特殊情况

1,单下划线开头的变量名_name :
这样的变量外部可以访问,但是预定俗成,视为私有变量

2,双下划线的变量 也可以外部访问,只不过不能直接访问
Python解释器对外把__name变量改成了_Student__name,所以,仍然可以通过_Student__name来访问__name变量

5.静态语言 vs 动态语言

对于静态语言(例如Java)来说,如果需要传入Animal类型,则传入的对象必须是Animal类型或者它的子类,否则,将无法调用run()方法。

对于Python这样的动态语言来说,则不一定需要传入Animal类型。我们只需要保证传入的对象有一个run()方法就可以了

6. 类属性

给实例绑定属性的方法是通过 self 变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值