Python面向对象学习笔记【超清楚,一定可以帮助你】

 

一、基本理论

万物皆对象

对象是具体物体:拥有属性和行为

面向对象是面向过程的封装

成为包工头,进行指挥:把某些功能(属性和行为)安排给某一个对象,然后指挥对象工作。

某一个具体对象特征的抽象

组成

名称,属性,方法

作用

        根据抽象的类,生产具体的对象


二、在Python中的实践

如何定义一个类?(例子)

class Moner:   # 命名规则:大驼峰    pass# 经典类

根据这个类,创建(实例化)一个对象

one = Money()

Python面向对象学习笔记【超清楚,一定可以帮助你】_第1张图片

属性、变量

二者区别

变量:可以改变的量值(全局变量和局部变量)

属性:属于某个对象的特征(只能通过对象来进行访问)

二者判定依据

是否存在宿主

对象属性

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LiW55WM5aSq5aSnIOaIkeaDs-eci-eciw==,size_7,color_FFFFFF,t_70,g_se,x_16

 

# 1、定义一个类class Person:    pass# 2、根据这个类,创建一个对象p = Person()# 3、给p对象,增加一些属性p.age = 18p.height = 180# 4、验证是否添加成功print(p.age)print(p.__dict__)  # 当前对象的所有属性——————————————————————————————————————18{'age': 18, 'height': 180}

Python面向对象学习笔记【超清楚,一定可以帮助你】_第2张图片 查

print(p.age)print(p.__dict__)  # 当前对象的所有属性——————————————————————————————————————18{'age': 18, 'height': 180}self   pass

p.pets = ['小花','小黑']print(p.pets,id(p.pets))p.pets = [1,2]print(p.pets,id(p.pets))————————————————————————————['小花', '小黑'] 2081844979904[1,2] 2081844976192

地址开辟新路径

Python面向对象学习笔记【超清楚,一定可以帮助你】_第3张图片

 

p.pets = ['小花','小黑']print(p.pets,id(p.pets))p.pets.append('小黄') # p.pets代表访问列表print(p.pets,id(p.pets))_____________________________['小花', '小黑'] 2352257853568['小花', '小黑', '小黄'] 2352257853568

地址不改变

Python面向对象学习笔记【超清楚,一定可以帮助你】_第4张图片

del p.age

无用的值也会被删除,内存也会被释放掉

一个类可以产生多个不同的对象

类属性

万物皆对象,类也是一个对象

类名.类属性 = 值

在类中直接添加

class Person:    age = 18Person.number = 1print(Person.number)print(Person.age)——————————————————————————————118

类名.类属性

对象.类属性

class Money:    age = 18    count = 1    num = 666one = Money()print(one.age)print(one.count)print(one.num)——————————————————————181666

Python面向对象学习笔记【超清楚,一定可以帮助你】_第5张图片

 Python对象的属性查找机制:优先到对象自身去查找属性,如果没有找到,则根据__class__找到对象对应的类,到这个类里面查找

类名.类属性 = 值  若存在则为修改,不存在则为添加

对象.__class__.类属性 = 值

class Money:    age = 18one = Money()print(one.age)one.__class__.age = 19print(Money.age)————————————————————————1819

不能用 对象.类属性=值,,这样会给对象添加属性

del 类名.属性

del 对象.__class__.属性

类属性的内存储问题

一般情况下,属性存储在__dict__的字典中,有些内置对象没有这个dict属性

一般对象的dict是可以修改的        方法:对象.__dict__={}

类的dict是只读的,默认无法修改   可以通过setattr方法修改     

类属性对各个对象共享

类属性对象属性的限制

__slota__ = []列表中写上对象可以添加的属性 

class Person:    __slots__ = ['age']    passp1 = Person()p1.age = 18p1.num = 3print(p1.age)print(p1.num)

Python面向对象学习笔记【超清楚,一定可以帮助你】_第6张图片

未完待续...

 

 

你可能感兴趣的:(python,开发语言,后端)