回复:知道对象成员是否是方法

-----开始PGP签名消息-----
哈希:sha1
嗨,卢卡,
使用类型(某物).__名称__,例如
真的
真的
真的
卢卡(Luca)在2008年9月1日上午10:43写道:
-----开始PGP签名-------------
版本:gnupg v1.4.7(darwin)
ID8DBQFIU606CZ70OCIGLECRAHE6AJ4R0GUHLWXXBLAYUOLQPJ stypd+ggcgidkg
QTGL+NBAKGH5AOELTU5WEJU =
= W4EG
-----结束PGP签名-----

# 回答1


曼努埃尔·埃伯特(Manuel Ebert)在2008年9月1日星期一10:52:10 +0200写道:
真的
真的
真的

这是相对脆弱的,因为这些名称并非任何方式保留.
很容易愚弄名称与意外名称进行比较检查
碰撞:
.... 经过
...
'功能'
Trackback(最近的最新电话):
文件" ",第1行,<模块>
TypeError:"函数"对象不可呼应
但是愚弄类型检查并不容易:
错误的
当然,这也不是防弹的.我把它作为练习
发现如何打破该代码.
- -
史蒂文

# 回答2


2008年9月1日星期一,上午11:35,史蒂文·达·阿普拉诺(Steven D'Aprano)
... 经过
...
'功能'
Trackback(最近的最新电话):
文件" ",第1行,<模块>
TypeError:"函数"对象不可呼应
但是愚弄类型检查并不容易:
错误的
当然,这也不是防弹的.我把它作为练习
发现如何打破该代码.
好,所以...
做这个的最好方式是什么? "大多数Pythonic"?
- -
- 卢卡
# 回答3


2008年9月1日星期一11:45:36 +0200,卢卡写道:
伪造的课程也不是防弹的.我将其作为练习,让您如何打破该代码.
好,所以...
做这个的最好方式是什么? "大多数Pythonic"?
"大多数Pythonic"可能根本没有检查,而只是 *调用 *
对象并处理可能的失败.
您的用例是什么?
再见,
marc'blackjack'rintsch
# 回答4


在2008年9月1日星期一11:45:36 +0200上,卢卡询问了识别方法:
这取决于您为什么这样做的原因以及您想对
找到它后的信息.
如果您在互动解释器中进行实验,这是最简单的方法
只是调用该方法,看看会发生什么:
obj.methodname()#调用该方法
如果成功,那么它是某种可叫的方法或函数
或更罕见的东西.
如果您担心副作用,请使用:
可呼叫(obj.methodname)
另外,您可以阅读文档:
帮助(OBJ)
帮助(obj.methodname)
如果您的目的是写诸如调试器,探索器或某些内容之类的东西
其他需要检查任意对象并解决的应用程序
他们做什么,那么您可能应该使用:
isInstance(obj.methodname,new.instancemethod)
但是请记住,并非所有可呼叫属性都是InstanceMethods!
没有一个正确的方法.
希望这可以帮助.
- -
史蒂文
# 回答5


在2008年9月1日星期一,下午2:18,史蒂文·达·阿普拉诺
是的,t 他的帮助很大. 实际上,我需要做类似语言解析器的事情. 谢谢大家. - - - 卢卡
# 回答6

卢卡写道: 通过执行Python创建的对象结构的 *解析器 * 程序?

标签: python

添加新评论