如何访问qux
里面的方法?我是否真的必须在foo()
的主体内再次定义它,或者有没有办法从self
导入它?python函数的默认参数
class Baz(object):
qux = lambda x : x + '_quux'
def foo(self, bar=qux('fred')):
print bar
print qux('waldo')
# NameError: global name 'qux' is not defined
print Baz.qux('waldo')
# TypeError: unbound method <lambda>() must be called with Baz instance as first argument (got str instance instead)
print Baz.qux(self, 'waldo')
# TypeError: <lambda>() takes exactly 1 argument (2 given)
print self.qux('waldo')
# TypeError: <lambda>() takes exactly 1 argument (2 given)
谢谢你,我的实际使用情况是从os.path中进口ABSPATH,目录名,加盟,真实路径,expanduser像 ',''PSD =拉姆达S:真实路径(join(dirname(abspath(__ file__)),s))''但我不想用全部的垃圾来污染全局命名空间。 – wim 2011-06-09 02:48:42
@wim,你的代码污染了更糟糕的类名称空间。只需在模块级别 – 2011-06-09 02:52:36
进口它哦,这对waldo有效,但是为fred破坏了..现在我得到了'TypeError:'staticmethod'对象在第5行不可调用' – wim 2011-06-09 02:57:35