首页 > 编程语言 >Python基础入门学习笔记 039 类和对象:拾遗

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

时间:2023-08-23 10:57:37浏览次数:63  
标签:count 10 num Python self 拾遗 039 __ print

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

实例:

 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(a.count,b.count,c.count)
 5 0 0 0
 6 >>> c.count += 10
 7 >>> print(a.count,b.count,c.count)
 8 0 0 10
 9 >>> C.count += 100
10 >>> print(a.count,b.count,c.count)
11 100 100 10

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

 1 >>> class C:
 2 def x(self):
 3 print('X-man')
 4 
 5 
 6 >>> c = C()
 7 >>> c.x()
 8 X-man
 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所谓的绑定概念。

标签:count,10,num,Python,self,拾遗,039,__,print
From: https://www.cnblogs.com/ybqjymy/p/17650591.html

相关文章

  • Python-OpenCV双目测距代码实现以及参数解读
    一、双目相机拍照后使用Matlab进行双目标定必看:USB双目相机的具体标定过程:https://blog.csdn.net/qq_40700822/article/details/124251201?spm=1001.2014.3001.5501主要参考:https://blog.csdn.net/dulingwen/article/details/98071584感谢大佬的分享!!!(*≧ω≦)!!二、标定后生成......
  • Python基础入门学习笔记 040 类和对象:一些相关的BIF
    一些相关的BIFissubclass(class, classinfo) 如果第一个参数(class)是第二个参数(classinfo)的一个子类,则返回True,否则返回False1>>>classA:2pass34>>>classB(A):5pass67>>>issubclass(B,A)8True9>>>issubclass(B,B)#......
  • Python基础入门学习笔记 041 魔法方法:构造和析构
     __init__(self[,...]) 方法是类在实例化成对象的时候首先会调用的一个方法1>>>classRectangle:2def__init__(self,x,y):3self.x=x4self.y=y5defgetPeri(self):6return(self.x+self.y)*27defgetArea......
  • Python基础入门学习笔记 038 类和对象:继承
    继承         子类               父类class DerivedClassName(BaseClassName):……实例:一个子类可以继承它的父类的所有属性和方法1>>>classParent:2defhello(self):3print('正在调用父类的方法......
  • Python基础入门学习笔记 036 类和对象:给大家介绍对象
    给大家介绍对象把乱七八糟的数据扔进列表里,称数据层面的封装把常用的代码段打包成一个函数,称语句层面的封装把数据和代码都封装在一起,称对象层面的封装对象 = 属性 + 方法对象可以从静态(属性)与动态(方法)两个特征来描述 OO(面向对象)的特征继承class Turtle:#Pytho......
  • Python基础入门学习笔记 037 类和对象:面向对象编程
    self是什么?Python的self其实就相当于C++的this指针。由同一个类可以生产无数对象,当一个对象的方法被调用的时候,对象会将自身的引用作为第一个参数传给该方法,那么python就知道需要操作哪个对象的方法了。1>>>classBall:2defsetName(self,name):3self......
  • Python基础入门学习笔记 032 异常处理:你不可能总是对的
    实例1:1file_name=input('请输入需要打开的文件名:')2file=open(file_name)3print('文件的内容是:')4foreach_lineinfile:5print(each_line)6file.close() Python标准异常总结 以下是Python内置异常类的层次结构:......
  • Python基础入门学习笔记 033 异常处理:你不可能总是对的2
    try-except语句try:  检测范围exceptException[asreason]:  出现异常(Exception)后的处理代码实例1:1try:2f=open('TE.txt')3print(f.read())4f.close()5exceptOSError:6print('文件打开过程中出错了!!!')实例2:1try:2f=open(......
  • Python基础入门学习笔记 034 丰富的else语句及简洁的with语句
    丰富的else语句•要么怎样,要么不怎样if条件:  条件为真执行else:  条件为假执行    •干完了能怎样,干不完就别想怎样实例1:1defshowMaxFactor(num):2count=num//2#//为整除,判断是素数,只需依次判断当前数num除以1到(num//2)都不能整除即可3......
  • Python基础入门学习笔记 027 集合:在我的世界里,你就是唯一
    字典的表亲--集合(在python3中,如果用大括号括起一堆数字但没有体现映射关系,那么就会认为这堆玩意儿就是个集合)1>>>num1={}2>>>type(num1)3<class'dict'>4>>>num2={1,3,4}5>>>type(num2)6<class'set'>集合中的元素都是唯一的(集合会自动帮我们把......