我在阅读库中上瘾。我喜欢他们的代码结构,美观和最重要的方式:可读性。我试图通过这样做来学习。但是,有时这样的线:声明:var = property(lambda self:object())
something = property(lambda self: object())
抓住我的眼睛!
我内部_socket.py
和此类:
class error(Exception):
""" Base class for I/O related errors. """
def __init__(self, *args, **kwargs): # real signature unknown
pass
@staticmethod # known case of __new__
def __new__(S, *more): # real signature unknown; restored from __doc__
""" T.__new__(S, ...) -> a new object with type S, a subtype of T """
pass
def __reduce__(self, *args, **kwargs): # real signature unknown
pass
def __str__(self): # real signature unknown; restored from __doc__
""" x.__str__() <==> str(x) """
pass
characters_written = property(lambda self: object()) # default
errno = property(lambda self: object()) # default
filename = property(lambda self: object()) # default
strerror = property(lambda self: object()) # default
补助金的好奇是在包含它们lambda
那些4个最后行。问题是:这是如何工作的?他们的意思是什么,结果如何?你能以简单的方式展示这个陈述的例子吗? 谢谢你!
'_socket.py'?我无法在python2.7和python3.3中找到它。你的意思是'socket.py'吗?我没有在该文件中看到任何“错误”的定义。 '_socket'模块在'socketmodule.c'下的C中实现。 – Bakuriu
@Bakuriu,我不完全清楚,但我认为IDE可能有一些涉及到的东西。我实际使用的IDE是PyCharm。该'socket.py'从这个路径导入'_socket.py':'/home/my_user/.PyCharm20/system/python_stubs /.../_ socket.py',只是为了避免任何猜测,我运行Ubuntu 。 –
是的,那是*不是真正的源代码。这只是PyCharm用于推断C扩展模块类型的一个存根。真正的源代码位于Python源代码中的'/ Modules/socket.module.c'下。 – Bakuriu