我在閱讀庫中上癮。我喜歡他們的代碼結構,美觀和最重要的方式:可讀性。我試圖通過這樣做來學習。但是,有時這樣的線:聲明: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