Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何访问dunder方法?

如何访问dunder方法?
EN

Stack Overflow用户
提问于 2021-11-29 13:11:02
回答 1查看 57关注 0票数 0
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
number = 5

print(number.__class__)
print(number.__str__())
print(number.__add__(1))

#Output

<class 'int'>
5
6

我想我是想看看我的理解是否正确。

因此,有不同的方法可以访问dunder方法。在第一种情况下,我似乎正在访问该方法,就好像它是类int的属性一样。在这种情况下,__class__是否使用@property装饰器来访问它,就好像它是一个属性一样?如果是这样的话,这是有道理的。

第二和第三个是有意义的。__str___是在类int中定义的一个不带参数的dunder方法。您可以像调用方法一样调用它。__add__接受一个参数,这是您要添加到参数中的数字。所以你必须像调用带参数的方法一样调用它。所以这些都不使用@property装饰器。

我猜更令人困惑的是,从技术上讲,可以使用@property装饰器将__str__变成属性。我自己在自己的类上测试了它,它肯定可以以任何一种方式工作,所以它看起来有点随意,哪些像属性一样被访问,哪些像方法一样被访问。假设我的理论是正确的。

EN

回答 1

Stack Overflow用户

发布于 2021-11-29 13:17:04

所以有不同的方式来访问

方法。在第一种情况下,我似乎正在访问该方法,就好像它是类int的属性一样。

这是因为__class__是一个属性,而不是一个方法。

另一个需要区分的地方是,访问方法的方式总是相同的。Dunder方法在这一点上并不神奇。在实例和方法名之间使用.。你是仅仅引用这个方法,还是调用它来获得结果,那就是另一回事了。

虽然这是一个理解Python工作原理的合理练习,但请记住,通常不应该直接调用Dunder方法。Python提供了在幕后调用这些方法的其他语法。例如,使用str(number)而不是number.__str__(),使用a + b而不是a.__add__(b)

dunder方法的主要原因是它们允许您在自己的类中覆盖默认行为。它们并不打算被直接调用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70161362

复制
相关文章
访问方法access method---单表访问方法(三十六)
上篇文章回忆了innodDB的独立表空间和系统表空间的结构,因为需要梳理的知识点太多,所以额外用一篇。
用户9919783
2022/07/26
5180
PG通过表访问方法API如何执行顺序扫描
PG中有很多方法检索数据并返回给用户。依赖于用户的SQL语句,查询计划模块生成最有方法以检索请求的数据。顺序扫描是用户请求大量数据时或者当表没有索引时使用的一种检索方法(例如select * from tablename;);顺序扫描方法由表的表访问方法APIchuli,heap表访问方法时当前版本中默认的方法。本文中,将会介绍表访问方法API如何进行顺序扫描。
yzsDBA
2021/02/03
1.3K0
PG通过表访问方法API如何执行顺序扫描
访问youtube的方法
203.208.39.104 www.youtube.com 203.208.33.100 gdata.youtube.com
EltonZheng
2021/01/26
12.9K0
[C#]如何访问及调用类中私有成员及方法
本文为原创文章、源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称、作者及网址,谢谢!
CNXY
2019/05/24
2.7K0
面试题8:如何通过反射访问属性和方法?
在“面试题7”中,已经介绍了我们使用反射的3个步骤,分别是:获取Class对象——>获得构造方法Constructor对象——>调用newInstance方法来创建对象实例。
爪哇缪斯
2023/05/09
4100
面试题8:如何通过反射访问属性和方法?
WinCC实现访问Redis方法
SIMATIC WinCC作为行业内非常著名的SCADA软件,是西门子最经典的过程监视系统,实现了自动化系统与IT系统之间的互联互通。WinCC能为工业领域提供完备的监控与数据采集(SCADA)功能,其功能随着版本的不断升级也不断更新完善。
剑指工控
2021/11/09
1.2K0
私有属性/方法的访问
在属性/方法名前有双下划线的,称为私有属性/方法,私有属性/方法外部不能直接访问,
py3study
2020/01/17
1.9K0
浅谈Semaphore类 如何控制某个方法允许并发访问线程的个数?
请求一个信号量,这时候信号量个数-1,当减少到0的时候,下一次acquire不会再执行,只有当执行一个release()的时候,信号量不为0的时候才可以继续执行acquire
听着music睡
2018/12/05
1.3K0
浅谈Semaphore类
		如何控制某个方法允许并发访问线程的个数?
Apache禁止目录访问方法介绍
在Apache中配置禁止目录访问,即禁止游览列出的目录/文件列表的方法     访问网站目录时Apache默认配置为可列出目录/文件列表,即当你访问http://localhost时会列出相关的目录和文件列表,我们可以通过修改Apache配置文件httpd.conf来实现禁止列出目录/文件列表,方法如下: 1、打开apache配置文件httpd.conf 2、找到         <Directory />          Options Indexes          AllowOverride
Java学习123
2018/05/16
4.7K0
通过HTTP访问接口,工具方法
/* * 通过HTTP访问接口, * 详情,返回一个Map对象 */ public static Map<String,Object> callByHTTP(String URL,String data,String RequestMethod,boolean encrypt) throws Exception{ StringBuffer returnData=new StringBuffer(); InputStream in = null; //网络连接 logger.info(
用户1220053
2018/02/09
1.7K0
关于python访问字典的方法
def stu( **kwargs): # 在函数体内对于kwargs的使用不用带星号 print("大家好,我为大家简单自我介绍以下:") print(type(kwargs)) # 对于字典的访问,python2和python3 有区别 # 对于字典的访问kwargs.items(),中间是点链接的来进行访问 for k,v in kwargs.items(): print(k, "---", v) stu(name="zhangs
py3study
2020/02/10
6760
nginx禁止ip访问,允许域名访问如何配置
这样做是为了避免其他人把未备案的域名解析到自己的服务器IP,而导致服务器被断网,我们可以通过禁止使用ip访问的方法,防止此类事情的发生。
用户2471797
2022/10/27
9.3K0
MySQL限制IP访问的方法
最近有个故障整改,需要限制IP访问MySQL数据库,查了一下资料。 做做笔记,多多指教
Li_XiaoJin
2022/06/10
6.6K0
MySQL Access Method 访问方法简述
通过主键或者唯一二级索引列来定位一条记录的访问方法定义为: const ,意思是常数级别的,代 价是可以忽略不计的。不过这种 const 访问方法只能在主键列或者唯一二级索引列和一个常数进行等值比较时才 有效,如果主键或者唯一二级索引是由多个列构成的话,索引中的每一个列都需要与常数进行等值比较,这个 const 访问方法才有效(这是因为只有该索引中全部列都采用等值比较才可以定位唯一的一条记录)。
Karos
2023/10/23
2820
MySQL Access Method 访问方法简述
如何利用powershell 访问sqlserver
你是否需要连接数据库?这里有一段代码演示如何查询和获取SQL数据,只需非常简单正确的配置你的账户信息、服务器地址及SQL语句就行:
用户1217611
2022/05/06
7870
如何实现跨网段访问
在当今数字化时代,网络已经成为了我们生活和工作中不可或缺的一部分,在智能工厂的场景中,设备因为需要联网才能接入数字化管理系统,常常会遇到各种问题。
物通博联-博学
2023/06/25
3960
国内如何免费访问 Google
1.下载 Chrome 扩展程序离线安装文件 google-access-helper.zip
王小明_HIT
2019/10/09
29.1K8
国内如何免费访问 Google
ios 如何访问私有变量
方式二: 假如我们不知TestObject有哪些属性,所以我们可以利用RunTime获取所有属性
赵哥窟
2018/09/13
2.2K0
如何设置电脑不能访问公网但是能够访问内网
方法: 删除本地路由 手动添加只能访问内网的路由 首先查看本地路由 打开cmd 输入 ipconfig /all 通常默认网关对应的路由即是默认路由
我是李超人
2020/08/21
4.4K0
如何设置电脑不能访问公网但是能够访问内网
如何有效减少网页加载时间?20个提高网站访问速度的方法
网友上网都不喜欢用太多的时间等待网页的打开,等待的越长,用户可能会直接关闭网页,这样就会损失很多流量!其次,关键字的排名与网页的打开速度也有关系,这个主要体现搜索引擎对用户体验度上,用户体验度好,排名相对其它网站就好些。因此我觉得我们有必要去提高网页的打开速度,这个不需要太多的成本投入,只需要平时多注意一些小技巧就行了!下面给出20种方法帮你提高网站访问速度缩短网页加载时间。 1、减少页面HTTP请求数量 比较直接的理解就是要减少调用其他页面、文件的数量。 A.我们在使用css格式控制的时候,经常会采用ba
前朝楚水
2018/04/03
3K0
如何有效减少网页加载时间?20个提高网站访问速度的方法

相似问题

Dunder方法

11

如何使用CFFI在C中访问Python dunder方法?

222

继承和dunder方法?

222

如何在dunder方法中等待?

116

如何使用dunder方法进行对象比较

24
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文