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

 

一、基本理论

万物皆对象

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

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

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

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

组成

名称,属性,方法

作用

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


二、在Python中的实践

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

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

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

one = Money()

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

属性、变量

二者区别

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

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

二者判定依据

是否存在宿主

对象属性

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}

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

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

地址开辟新路径

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

 

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

地址不改变

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

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

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

 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)

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

未完待续...

 

 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值