Giả sử tôi muốn gỡ lỗi một lớp đơn giản với thuộc tính myattribute
. Tôi tạo ra một phương pháp repr
như thế này:Làm cách nào để sử dụng `str.format` trực tiếp dưới dạng` __repr__`?
class SimpleClass:
def __repr__(self):
return "{0.myattribute}".format(self)
Nó cảm thấy một chút dư thừa, vì vậy tôi muốn sử dụng format
trực tiếp:
class SimpleClass:
__repr__ = "{0.myattribute}".format
... nhưng điều đó không thành công với một IndexError: tuple index out of range
. Tôi hiểu rằng format
không thể truy cập vào đối số self
, nhưng tôi không thấy lý do.
Tôi có làm điều gì sai không, đây có phải là giới hạn CPython – hoặc điều gì khác không?
Bạn có thể làm điều này '__repr__ = lambda self:" {0.myattribute} ". Định dạng (self)' nhưng tôi nghĩ nó tệ hơn một 'def' –
note: đừng làm vậy. –
Giải thích lách cách của tôi là nó có thể liên quan đến sự khác biệt giữa các phương thức liên kết và không ràng buộc. – NPE