【发布时间】:2009-07-06 13:38:09
【问题描述】:
我正在使用类的生成器函数和私有函数。我想知道
- 为什么在 __someFunc 中产生(在我的一种情况下是偶然的)时,这个函数似乎不是从 __someGenerator 中调用的。另外,在提及语言的这些方面时,我想使用什么术语?
- python 解释器可以警告这种情况吗?
以下是我的场景的示例 sn-p。
class someClass():
def __init__(self):
pass
#Copy and paste mistake where yield ended up in a regular function
def __someFunc(self):
print "hello"
#yield True #if yielding in this function it isn't called
def __someGenerator (self):
for i in range(0, 10):
self.__someFunc()
yield True
yield False
def someMethod(self):
func = self.__someGenerator()
while func.next():
print "next"
sc = someClass()
sc.someMethod()
我对此感到很恼火,并花了一些时间试图弄清楚为什么一个函数没有被调用。我终于发现我正在让步于我不想参与的功能。
【问题讨论】:
-
正交 Python 建议:前导双下划线是不必要的,只需使用单个前导下划线,Python 编码人员会认识到它不是绅士隐私的界面的一部分。
-
你怎么不知道你有一个收益声明?其他人是否编辑了您的代码并且您做了一个 SVN 并对更新感到惊讶?导致函数成为生成器而不是普通方法的场景是什么。
-
@S.Lott:复制/粘贴,正如他的评论所提到的。我总是发现复制/粘贴代码比他们解决的问题更令人头疼,但我知道很多人觉得它们很有用。
标签: python function generator language-features