IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> python基础学习-组合+类、类对象和实例对象+绑定 -> 正文阅读

[开发工具]python基础学习-组合+类、类对象和实例对象+绑定

这一部分主要记录之前学这一块遗漏的一些东西

1、组合

在这里插入图片描述
这里如果用多继承的话,用水池继承乌龟和鱼,涉及到了不同物种,显然不太合适,这里就引入了组合的概念。

# 组合(将需要的类一起进行实例化并放入新的类中)
# 现在要求定义一个类,叫水池,水池里要有乌龟和鱼。
class Turtle:
    def __init__(self,x):
        self.num = x

class Fish:
    def __init__(self,x):
        self.num = x

class Pool:
    def __init__(self,x,y):
        self.turtle = Turtle(x)
        self.fish = Fish(y)

    def print_num(self):
        print('水池里一共有乌龟 %d 条,鱼 %d 条' % (self.turtle.num, self.fish.num)) # self.turtle是Turtle实例化后的对象

pool = Pool(1, 10)
pool.print_num()

运行结果
在这里插入图片描述
组合一般是把几个没有继承关系的几个类放在一起,就叫做组合(一般横向关系的几个类叫做组合,纵向关系的几个类叫做继承)。

2、类、类对象和实例对象

修改类对象的属性不会修改实例对象的属性
首先看一个例子

# 类、类对象和实例对象
class C:
  count = 0

a = C()
b = C()
c = C()

print("a,b,c实例化C后的count值为", a.count ,b.count, c.count)

# 修改实例化对象的属性
c.count += 10
print("实例化对象c.count做加法后a,b,c的值", a.count ,b.count, c.count)
# 修改类对象的属性
print("C类对象的count值", C.count)
C.count += 100
print("类对象C.count做加法后a,b,c的值", a.count ,b.count, c.count)

运行结果
在这里插入图片描述
对比上面的结果,可以发现对实例对象c的count属性赋值后,就相当于覆盖了类对象C的count属性。如果没有赋值覆盖,那么引用的是类对象的count属性。
在这里插入图片描述
类中定义的属性其实都是静态属性,对实例化对象的c的count进行修改时,并不会影响到类对象C的属性

如果属性的名字跟方法名相同,属性会覆盖方法

# 类、类对象和实例对象,如果属性的名字跟方法名相同,属性会覆盖方法
class C:
  def x(self):
    print("x方法")

c = C()
c.x()

# 给实例化属性赋值后,如果属性的名字跟方法名相同,属性会覆盖方法
c.x = 1
c.x() # 无法正常调用x方法

这里在给实例化对象c的属性x赋值之后,这里的x属性将会覆盖x方法,调用c.x() 将会报错
在这里插入图片描述
小总结:不要试图在一个类里边定义出所有能想到的特性和方法,应该利用继承和组合机制来进行扩展;用不同的词性命名,如属性名用名词、方法名用动词,并使用骆驼命名法等。

3、绑定

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里因为类对象定义的属性相当于静态变量,就算类对象被删除了,他们依然存储在内存当中,只有当程序退出后,内存才会被释放。在平常开发中,我们尽量使用实例对象的属性,减少使用类对象相关的操作(类对象属性相关操作一般用来跟踪与类有关的值)

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-10-15 11:58:54  更:2021-10-15 12:01:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/23 14:41:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计