Python使用property函数定义的属性名与其他实例变量重名会怎么样?
首先如果定义的属性名与该属性对应的操作方法操作的实例对象同名就会触发无穷的递归调用,相关部分请参考《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使用property函数定义的属性名与其他实例变量重名会怎么样?的更多相关文章
- 第7.23节 Python使用property函数定义属性简化属性访问的代码实现
第7.23节 Python使用property函数定义属性简化属性访问的代码实现 一. 背景 在本章前面章节中,我们介绍了类相关的知识,并举例进行了说明,在这些例子中会定义一些形如 ...
- Python使用property函数定义属性访问方法如果不定义fget会怎么样?
我们知道Python使用property函数定义属性访问方法时的语法如下: 实例属性=property(fget=None, fset=None, fdel=None, doc=None) 而是要@p ...
- 第7.25节 Python案例详解:使用property函数定义与实例变量同名的属性会怎样?
第7.25节 Python案例详解:使用property函数定义与实例变量同名的属性会怎样? 一. 案例说明 我们上节提到了,使用property函数定义的属性不要与类内已经定义的普通实例变量重 ...
- Python使用property函数和使用@property装饰器定义属性访问方法的异同点分析
Python使用property函数和使用@property装饰器都能定义属性的get.set及delete的访问方法,他们的相同点主要如下三点: 1.定义这些方法后,代码中对相关属性的访问实际上都会 ...
- 第7.24节 Python案例详解:使用property函数定义属性简化属性访问代码实现
第7.24节 Python案例详解:使用property函数定义属性简化属性访问代码实现 一. 案例说明 本节将通过一个案例介绍怎么使用property定义快捷的属性访问.案例中使用Rectan ...
- python学习7—函数定义、参数、递归、作用域、匿名函数以及函数式编程
python学习7—函数定义.参数.递归.作用域.匿名函数以及函数式编程 1. 函数定义 def test(x) # discription y = 2 * x return y 返回一个值,则返回原 ...
- python简单的函数定义和用法实例
python简单的函数定义和用法实例 这篇文章主要介绍了python简单的函数定义和用法,实例分析了Python自定义函数及其使用方法,具有一定参考借鉴价值,需要的朋友可以参考下 具体分析如下: 这里 ...
- 规避Javascript多人开发函数和变量重名问题
函数和变量重名始终是一个令人头痛的问题,先讲变量吧,相信了解JS的朋友都知道,在JS中 是没有块级作用域的只有函数作用域,也就是说那些以大括号为界定符的代码块是管不住其中定义 的变量的作用域的,举例: ...
- linker command failed with exit code 1 (use -v to see invocation) 变量重名
有时候,xcode报错看不到,点最后一个按钮,类似气泡的就能看到 报错信息: duplicate symbol _imgNummmm in: /Users/mianmian/Library/De ...
随机推荐
- ubuntu常见问题有效解决办法
1.关于weget "无法建立SSL连接"的解决方法 wget在使用HTTPS协议时,默认会去验证网站的证书,而这个证书验证经常会失败. 解决办法 原命令加上"--no- ...
- TCP 三次握手和四次挥手图解(有限状态机)
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由 IETF 的 RFC 793 定义,是为了在不可靠的互联网络 ...
- 想更改Github仓库中的某个文件结构
虽然有各种版本回退啥的,可是感觉好麻烦,还是没搞来,后来发现可以直接先删除,然后在本地更改,更改完之后重新添加一次即可 删除远程库的某个文件: $ git pull origin master 将远程 ...
- 利用命令行将本地代码上传至GitHub仓库
p.p1 { margin: 0 0 0 60px; font: 16px "PingFang SC"; color: rgba(88, 110, 117, 1) } p.p2 { ...
- 常用DOS指令
Windows的DOS命令,其实是Windows系统的cmd命令,它是由原来的MS-DOS系统保留下来的. MS-DOS称为微软磁盘操作系统,最开始从西雅图公司(蒂姆·帕特森)买过来 MS-DOS系 ...
- 论文阅读:An End-to-End Network for Generating Social Relationship Graphs
论文链接:https://arxiv.org/abs/1903.09784v1 Abstract 社交关系智能代理在人工智能领域中越来越引人关注.为此,我们需要一个可以在不同社会关系上下文中理解社交关 ...
- 经典c程序100例==11--20
[程序11] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数列1 ...
- 可变参数以及stdcall
void event_warnx(const char *fmt, ...) EV_CHECK_FMT(1,2); #define EV_CHECK_FMT(a,b) __attribute__((f ...
- rbd的image快照与Pool快照
前言 这个问题是不久前在ceph社区群里看到的,创建image的时候,当时的报错如下: 2016-12-13 23:13:10.266865 7efbfb7fe700 -1 librbd::image ...
- 整理了 15 道 Spring Boot 高频面试题,看完当面霸!
转载:https://mp.weixin.qq.com/s/fj-DeDfGcIAs8jQbs6bbPA 什么是面霸?就是在面试中,神挡杀神佛挡杀佛,见招拆招,面到面试官自惭形秽自叹不如!松哥希望本文 ...