问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Python中类与对象的其他说明?

发布网友 发布时间:2022-04-23 09:01

我来回答

1个回答

热心网友 时间:2022-04-06 15:45

9.4. 一些说明
数据属性会覆盖同名的方法属性。为了避免意外的名称冲突,这在大型程序中是极难发现的 Bug,使用一些约定来减少冲突的机会是明智的。可能的约定包括:大写方法名称的首字母,使用一个唯一的小字符串(也许只是一个下划线)作为数据属性名称的前缀,或者方法使用动词而数据属性使用名词。
数据属性可以被方法引用,也可以由一个对象的普通用户(客户)使用。换句话说,类不能用来实现纯净的数据类型。事实上,Python 中不可能强制隐藏数据——一切基于约定(如果需要,使用 C 编写的 Python 实现可以完全隐藏实现细节并控制对象的访问。这可以用来通过 C 语言扩展 Python)。
客户应该谨慎的使用数据属性——客户可能通过践踏他们的数据属性而使那些由方法维护的常量变得混乱。注意:只要能避免冲突,客户可以向一个实例对象添加他们自己的数据属性,而不会影响方法的正确性——再次强调,命名约定可以避免很多麻烦。
从方法内部引用数据属性(或其他方法)并没有快捷方式。我觉得这实际上增加了方法的可读性:当浏览一个方法时,在局部变量和实例变量之间不会出现令人费解的情况。
一般,方法的第一个参数被命名为 self。这仅仅是一个约定:对 Python 而言,名称 self 绝对没有任何特殊含义。(但是请注意:如果不遵循这个约定,对其他的 Python 程序员而言你的代码可读性就会变差,而且有些 类查看器 程序也可能是遵循此约定编写的。)
类属性的任何函数对象都为那个类的实例定义了一个方法。函数定义代码不一定非得定义在类中:也可以将一个函数对象赋值给类中的一个局部变量。例如:
# Function defined outside the class
def f1(self, x, y):
return min(x, x+y)
class C:
f = f1
def g(self):
return 'hello world'
h = g
现在 f, g 和 h 都是类 C 的属性,引用的都是函数对象,因此它们都是 C 实例的方法-- h 严格等于 g 。要注意的是这种习惯通常只会迷惑程序的读者。
通过 self 参数的方法属性,方法可以调用其它的方法:
class Bag:
def __init__(self):
self.data = []
def add(self, x):
self.data.append(x)
def addtwice(self, x):
self.add(x)
self.add(x)
方法可以像引用普通的函数那样引用全局命名。与方法关联的全局作用域是包含类定义的模块。(类本身永远不会作为全局作用域使用。)尽管很少有好的理由在方法 中使用全局数据,全局作用域却有很多合法的用途:其一是方法可以调用导入全局作用域的函数和方法,也可以调用定义在其中的类和函数。通常,包含此方法的类也会定义在这个全局作用域,在下一节我们会了解为何一个方法要引用自己的类。
每个值都是一个对象,因此每个值都有一个 类( class ) (也称为它的 类型( type ) ),它存储为 object.__class__ 。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
有信网络电话靠什么赚钱?因为充值用的是联通跟移动公司的充值卡,跟有... sh什么什么长青 ...爱过这么深,爱上你我感觉是罪幸福的人”是什么歌? ...师的微笑的日语歌词及中文歌词、罗马音(中文没有也可以) 《仁王》近江篇介绍_《仁王》近江篇是什么 仁王乌鸦天狗怎么过介绍_仁王乌鸦天狗怎么过是什么 ...已经收到,我们将会尽快给你回复,请注意查收邮件"英文怎么说... 夏至未央为什么下线 柴碧玉演过的电视剧 天霸表有陀飞轮手表吗? 佳能数码相机什么型号性价比比较高1500-2000左右 python为什么是面向对象的 佳能相机PC 1677用什么电池比较好? Canon Pc1057是不是单反机? 佳能PC1730多少钱 佳能数码相机镜头缩不回去了 python 我定义了一个比较复杂的实体类,怎么把能把JSON字符串转换成这... 佳能相机pc1730怎样识别真假 python类的定义与使用是什么? 佳能pc1730多少像素 佳能pc1730怎么对焦? 怎么导出EXCEL? 佳能Pc1730相机镜头不对焦 怎么修? python3变量类型可以是一个实体类吗 在电脑上怎么导出资料 佳能pc1730怎么导出照片 python 命名实体识别怎么计算准确率 召回率 python中如何把实体字符转为普通字符 什么是导入和导出 手机中的导出是什么意思 深圳工厂搬迁怎么补偿 佳能pc1267是什么相机? 什么是Python的类,方法,对象,实例?其中方法,对象,实例的概念相当模糊... 深圳市龙华区棚改拆迁货币补偿多少钱每平方 佳能PC1430数码相机的照片模糊是什么原因 有佳能pc1818这台相机吗? 东莞东到安徽阜阳的火车票是多少?什么时候发车?什么时候到达? python里面元组是什么意思? 搬迁补偿标准 佳能PC2275相机怎么拆卸? 东莞到阜阳的火车费多少啊 ,要坐多久啊? 佳能相机有PC1331型号的吗 东莞东_阜阳的火车的车次是? 电视剧水浒传第二集读后感 征地搬迁补偿标准 现在从东莞到阜阳的火车发车时间和车票价格谁知道 旧水浒传第二集读后感600 canon 相机pc2197型号像素多少? 深圳旧改新政:明确最低赔偿标准 签约率达95%可征收 佳能相机PC1080怎样调清晰度