Mr_*_*s_D 1 python lambda class-method python-2.7
class _GhostLink(object):
toGhost = lambda filename: False
class _Mod_AllowGhosting_All(_GhostLink):
def _loop(self):
# ...
if self.__class__.toGhost(fileName) != oldGhost:...
Run Code Online (Sandbox Code Playgroud)
产生:
class _GhostLink(object):
toGhost = lambda filename: False
class _Mod_AllowGhosting_All(_GhostLink):
def _loop(self):
# ...
if self.__class__.toGhost(fileName) != oldGhost:...
Run Code Online (Sandbox Code Playgroud)
同时传递一个实例,if self.toGhost(fileName) != ...结果如下:
Traceback (most recent call last):
File "bash\basher\mod_links.py", line 592, in Execute
changed = self._loop()
File "bash\basher\mod_links.py", line 587, in _loop
if self.__class__.toGhost(fileName) != oldGhost:
TypeError: unbound method <lambda>() must be called with _Mod_AllowGhosting_All instance as first argument (got Path instance instead)
Run Code Online (Sandbox Code Playgroud)
为什么toGhost表现得像类方法实例方法?
编辑:我知道类、静态等方法的区别 - 这是一个语法问题
看起来你想要一个静态方法:
class _GhostLink(object):
toGhost = staticmethod(lambda filename: False)
Run Code Online (Sandbox Code Playgroud)
或者:
class _GhostLink(object):
@staticmethod
def toGhost(filename):
return False
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1320 次 |
| 最近记录: |