09.python学习之面向对象
面向对象程序设计(Object Oriented Programming,OOP),它是一种程序设计思想,其本质是通过抽象方法建立模型,再将模型具体化的方法。
python最新学习宝典系列文章
- 01.python学习之基础
- 02.python学习之文件操作
- 03.python学习之模块与包
- 04.python学习之数据类型
- 05.python学习之元类
- 06.python学习之内存管理与垃圾回收机制
- 07.python学习之函数
- 08.python学习之设计模式
- 09.python学习之面向对象
- 10.python学习之正则表达式
- 11.python学习之系统编程
- 12.python学习之网络编程
- 13.python学习之Flask
- 14.python学习之Django
- 15.python学习之爬虫
- 16.python学习之MySQL
- 17.python学习之Redis
- 18.python学习之数据结构
- 99.python学习之常规题
- 100.python学习之常见题
Python中的可变对象和不可变对象?
不可变对象,该对象所指向的内存中的值不能被改变。当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个新的地址。
可变对象,该对象所指向的内存中的值可以被改变。变量(准确的说是引用)改变后,实际上其所指的值直接发生改变,并没有发生复制行为,也没有开辟出新的地址,通俗点说就是原地改变。
Pyhton中,数值类型(int 和float),字符串str、元祖tuple都是不可变类型。而列表list、字典dict、集合set是可变类型
Python的魔法方法
魔法方法就是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被Python所调用,你可以定义自己想要的行为,而这一切都是自动发生的,它们经常是两个下划线包围来命名的(比如__init___
, __len__
),Python的魔法方法是非常强大的所以了解其使用方法也变得尤为重要!
__init__
构造器,当一个实例被创建的时候初始化的方法,但是它并不是实例化调用的第一个方法。__new__
才是实例化对象调用的第一个方法,它只取下cls参数,并把其他参数传给__init___
。
___new__
很少使用,但是也有它适合的场景,尤其是当类继承自一个像元祖或者字符串这样不经常改变的类型的时候。
__call__
让一个类的实例像函数一样被调用__getitem__
定义获取容器中指定元素的行为,相当于self[key]
__getattr__
定义当用户试图访问一个不存在属性的时候的行为。__setattr__
定义当一个属性被设置的时候的行为__getattribute___
定义当一个属性被访问的时候的行为
面向对象中怎么实现只读属性?
将对象私有化,通过共有方法提供一个读取数据的接口
1 | class person: |
最好的方法
1 | class MyCls(object): |
谈谈你对面向对象的理解?
面向对象是相当于面向过程而言的,面向过程语言是一种基于功能分析的,以算法为中心的程序设计方法,而面向对象是一种基于结构分析的,以数据为中心的程序设计思想。在面向对象语言中有一个很重要的东西,叫做类。面向对象有三大特性:封装、继承、多态。
python最新学习宝典系列文章
- 01.python学习之基础
- 02.python学习之文件操作
- 03.python学习之模块与包
- 04.python学习之数据类型
- 05.python学习之元类
- 06.python学习之内存管理与垃圾回收机制
- 07.python学习之函数
- 08.python学习之设计模式
- 09.python学习之面向对象
- 10.python学习之正则表达式
- 11.python学习之系统编程
- 12.python学习之网络编程
- 13.python学习之Flask
- 14.python学习之Django
- 15.python学习之爬虫
- 16.python学习之MySQL
- 17.python学习之Redis
- 18.python学习之数据结构
- 99.python学习之常规题
- 100.python学习之常见题