Không nhiều người biết đến tính năng này, nhưng các hàm (và phương thức) của Python có thể có các thuộc tính . Hãy chứng kiến:
>>> def foo(x):
... pass
...
>>> foo.score = 10
>>> dir(foo)
['__call__', '__class__', '__delattr__', '__dict__', '__doc__', '__get__', '__getattribute__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name', 'score']
>>> foo.score
10
>>> foo.score += 1
>>> foo.score
11
Việc sử dụng và lạm dụng tính năng này trong Python là gì? Một cách sử dụng tốt mà tôi biết là việc sử dụng chuỗi docY của PLY để liên kết quy tắc cú pháp với một phương thức. Nhưng những gì về thuộc tính tùy chỉnh? Có những lý do tốt để sử dụng chúng?