当前位置: 首页 > 网络知识

Python基础入门学习笔记 039 类和对象:拾遗

时间:2026-01-29 09:25:52

组合(将需要的类一起进行实例化并放入新的类中)

实例:

1 class Turtle: 2 def __init__(self,x): 3 self.num = x 4 5 class Fish: 6 def __init__(self,x): 7 self.num = x 8 9 class Pool: 10 def __init__(self,x,y): 11 self.turtle = Turtle(x) 12 self.fish = Fish(y) 13 14 def print_num(self): 15 print('水池里一共有乌龟 %d 条,鱼 %d 条' % (self.turtle.num,self.fish.num)) 16 17 >>> pool = Pool(5,2) 18 >>> pool.print_num() 19 水池里一共有乌龟 5 条,鱼 2 条

•现在要求定义一个类,叫水池,水池里要有乌龟和鱼。

类、类对象和实例对象

以下例子可见,对实例对象c的count属性赋值后,就相当于覆盖了类对象C的count属性。如果没有赋值覆盖,那么引用的是类对象的count属性

1 >>> a = C() 2 >>> b = C() 3 >>> c = C() 4 >>> print(aount,bount,count) 5 0 0 0 6 >>> count += 10 7 >>> print(aount,bount,count) 8 0 0 10 9 >>> Count += 100 10 >>> print(aount,bount,count) 11 100 100 10

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

1 >>> class C: 2 def x(self): 3 print('Xman') 4 5 6 >>> c = C() 7 >>> c.x() 8 Xman 9 >>> c.x = 1 #新定义对象c的一个x属性,并赋值为1 10 >>> c.x 11 1 12 >>> c.x() #可见,方法x()已经被属性x给覆盖了 13 Traceback (most recent call last): 14 File "<pyshell#8>", line 1, in <module> 15 c.x() 16 TypeError: 'int' object is not callable

结论:不要试图在一个类里边定义出所有能想到的特性和方法,应该利用继承和组合机制来进行扩展;用不同的词性命名,如属性名用名词、方法名用动词,并使用骆驼命名法等。

到底什么是绑定?

实例1:(python严格要求需要有实例才能被调用,即绑定概念)

1 >>> class BB: 2 def printBB(): #缺少self,导致无法绑定具体对象 3 print('no zuo no die') 4 5 6 >>> BB.printBB() 7 no zuo no die 8 >>> bb = BB() 9 >>> bb.printBB() #出现错误原因是由于绑定机制,自动把bb对象作为第一个参数传入 10 Traceback (most recent call last): 11 File "<pyshell#15>", line 1, in <module> 12 bb.printBB() 13 TypeError: printBB() takes 0 positional arguments but 1 was given

•Python严格要求方法需要有实例才能被调用,这种限制其实就是Python所谓的绑定概念。



上一篇:Python基础入门学习笔记 047 魔法方法:定制序列
下一篇:Python基础入门学习笔记 064 GUI的终极选择:Tkinter
python
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素