python之中特性(attribute)与属性(property)有啥区别( 二 )
不要总纠缠概念,会用了,自然就理解了 :)加油!
■网友
属性和特性的区别在哪里,谁又能分得清记得住?这里不谈二者在语法上的区别,让我们换一个角度来看待这个问题,或许能帮助大家更好地记忆和理解attribute和property。鄙人不才,窃认为这是翻译方面的问题,是“懒政”,强行直译最多只能做到“信”,离“达”甚至“雅”还差得太远。也怨中文太过博大精深,容易让文学涵养低的人犯迷糊,尤其是翻译人员。如果你翻译得不好,还不如不翻。不过这都不是问题,我们用心点稍微修饰下,用更为明确而非简单含糊的词语来表述,就很直观了。举例:把parameter翻译成“形式参数”,把argument翻译为“实际参数”,虽然字数长一点但好处多多,比模糊的含义强的多。当然二者分别可简写为“形参”和“实参”,这更好了。应用(一般来说有以下两种翻译):1. 把attribute翻译成“字段”,把property翻译成“属性”。翻译特点:前者基于定义手法,后者基于表现,突出区别;2. 另外一种翻译方式,即把attribute按照常规翻译为“属性”,把property翻译为“属性式函数”或“属性函数”。翻译特点:二者基于类似的表现,但还突出了后者的定义手法。个人选择:因为attribute和property都可承载数据,调用方式也类似,只是定义手法和使用选择上有差异,所以名称中应该“求同存异”,我倾向于第二种。如果你觉得“属性式函数”(或“属性函数”)有点长,可以简写为“属函”,一开始可能会别扭,见得多了,就习惯了。当然,如果各位对以上内容有不同的看法,请指出来;如果还有更好的翻译方法,请分享出来。谢谢
■网友
attribute 包括默认的 getter/setter/deleter,触发内置的 get/set/delete 方法。
property 是特殊的 attribute,可以自定义 getter/setter/deleter 等属性,自己控制 get/set/delete 时触发的方法,也可以不定义来禁止该操作。
■网友
在Mark Lutz的书 Learning Python 4th Edition里对attribute是这么解释的:
An attribute is simply a variable name that is attached to a specific object (like a module).所以可以简单的认为attribute就是script里的变量名。
书里他对property是这么解释的:
A mechanism known as properties provides another way for new-style classes to define automatically called method for access or assignment to instance attribute.Properties are based on a new notion of attribute descriptors...In short, a property is a type of object assigned to a class attribute name.以上~
■网友
因为python无法完全实现封装性,比如在一个类的方法里对self.W和self.H两个变量进行赋值,在类的外边可以直接改变这两个变量。这称之为属性。但这样破坏了封装性,所以要在类的方法里写self.W,self.H=size,再通过property函数将size变成特性,在类外边通过改变size调用方法,再通过调用的方法来改变W和H的值。但是如果用__dict__来查看属性的话是没有size的,所以size是类外部为了实现封装性的一个中间变量(特性)。这是我的理解,希望各位指出不足,在下谢过
■网友
最近阅读《Python基础教程(第二版)》一书,在\u0026lt;第九章:属性\u0026gt;——属性一节中,出现了特性和属性的介绍,但是很乱,让人看不懂。于是我查阅了一些网络资料,并且反复阅读这一章节多次后,有了一些心得体会,放在下方供大家查阅:
首先是查阅资料,有一篇介绍python特性的文章讲解的很不错,我拿来共享特性是对类的一个特定属性的操作进行拦截,在操作这个属性时,执行特定的函数,对属性的操作进行拦截。在反复阅读\u0026lt;第九章:属性\u0026gt;——属性一节后,我先修改书中一些字词,方便大家理解(修改之处我会用黑体标明)属性第7章曾经提过
推荐阅读
- 怎样成为一名合格的Python程序员?
- python 爬虫,咋获得输入验证码之后的搜索结果
- python的html5lib这个库咋使用啊我在网上也没有找到相关文档
- 零基础入门学习啥语言好
- Python3.4和3.5区别大么
- python 中 def_():...... return _有啥作用
- 新互联网网站用Java还靠谱么对比Php,Python,Ruby的话
- 30岁男,创业失败转行学python,是否很晚?也不好找工作?
- Python 的开发速度比 C#.net 或 Vb.net 更快吗?
- 16年毕业,建筑环境与设备工程专业,干的一直是工程想转IT专业,想从python入手请问咋开始学习
