Python使用property函数定义的属性名与其他实例变量重名会怎么样?
2023-09-27 14:26:59 时间
首先如果定义的属性名与该属性对应的操作方法操作的实例对象同名就会触发无穷的递归调用,相关部分请参考《Python案例详解:使用property函数定义与实例变量同名的属性会怎样?》
但如果定义为另一个不同的实例变量名相同的名字呢?我们看案例:
>>> class Rectangle():
def __init__(self,length,width): self.width,self.__length = width,length
def setLen(self,length):
print("execute setLen")
self.__length=length
def getLen(self):
print("execute getLen")
return self.__length
width = property(None,setLen,0,'长方形的长')#属性名与实例变量width同名并且未设置get方法
>>> rect=Rectangle(10,5)
execute setLen
>>> rect.width
Traceback (most recent call last):
File "<pyshell#35>", line 1, in <module>
rect.width
AttributeError: unreadable attribute
>>> rect.width=15
execute setLen
>>>
>>>
从上述案例可以看出,定义的属性width与实例变量width同名,实际映射到的实例变量是len,在执行属性width的查看时,报属性不能读,而执行属性的赋值时,执行的是setLen方法,相当于width这个原本实例变量完全被覆盖。
相关内容可以参考:
1、《Python使用property函数定义属性简化属性访问的代码实现》
2、《 Python案例详解:使用property函数定义属性简化属性访问代码实现》
3、《Python案例详解:使用property函数定义与实例变量同名的属性会怎样?》
4、《Python案例详解: @property装饰器定义属性访问方法getter、setter、deleter》
5、《Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解》
6、《Python使用property函数和使用@property装饰器定义属性访问方法的异同点分析》
老猿Python,跟老猿学Python!
博客地址:https://blog.csdn.net/LaoYuanPython
请大家多多支持,点赞、评论和加关注!谢谢!
相关文章
- 从零开始学习python | 实例讲解如何制作Python模式程序
- 算法零基础到省一的“混”奖经历【第十三届蓝桥杯 Python B组】
- python爬虫实例——爬取微博热搜榜的评论
- [ Python ] Flask 基于 Web开发 大型程序的结构实例解析
- Python 线性拟合实例,超简单线性拟合,python线性回归,统计学基础,线性拟合代码实现
- Python bm25短文本分类,相似度识别,BM25算法相似度匹配,疾病相似度匹配gensim实现,bm25算法原理和实现实例
- 精品基于Python实现的基于BS架构的在线学习与推荐系统知识分享
- 接口自动化测试—python+requests接口自动化测试框架实例详解教程
- 为什么要学python?
- Python入门之迭代器/生成器/yield的表达方式/面向过程编程
- Python FFT (Fast Fourier Transform)
- (转载)opencv python 图像缩放/图像平移/图像旋转/仿射变换/透视变换
- Python Class 07-再讲函数(闭包与递归)
- python学习实例(1)
- Python 函数介绍
- 第8.29节 使用MethodType将Python __setattr__定义的实例方法与实例绑定
- 第8.26节 重写Python类中的__getattribute__方法实现实例属性访问捕获
- 第8.12节 Python类中使用__dict__定义实例变量和方法
- 第8.11节 Python类中记录实例变量属性的特殊变量__dict__
- 第8.11节 Python类中记录实例变量属性的特殊变量__dict__
- 第7.11节 案例详解:Python类实例变量
- 第7.10节 Python类中的实例变量定义与使用
- 如何使用python来模拟鼠标点击(将通过实例自动化模拟在360浏览器中自动搜索"python")
- Python爬虫项目70例,附源码 70个Python爬虫练手实例
- 【Android 逆向】使用 Python 代码解析 ELF 文件 ( PyCharm 中进行断点调试 | ELFFile 实例对象分析 )
- [ Python入门教程 ] Python中日志记录模块logging使用实例
- 一、python学习之Linux系统基础
- python学习之数据分析(二):Matplotlib库:常用画图技巧, 折线图, 散点图,柱状图,直方图, 饼图