Tôi có một lớp học như:__getattr__ cho các biến tĩnh/lớp trong python
class MyClass:
Foo = 1
Bar = 2
Bất cứ khi nào MyClass.Foo
hoặc MyClass.Bar
được gọi, tôi cần một phương pháp tùy chỉnh được gọi trước khi giá trị được trả về. Có thể bằng Python? Tôi biết có thể nếu tôi tạo một thể hiện của lớp và tôi có thể định nghĩa phương thức __getattr__
của riêng mình. Nhưng scnenario của tôi liên quan đến việc sử dụng lớp này như vậy mà không tạo ra bất kỳ thể hiện nào của nó.
Ngoài ra tôi cần có phương thức tùy chỉnh __str__
để được gọi khi str(MyClass.Foo)
được gọi. Python có cung cấp một tùy chọn như vậy không?
Cảm ơn Ignacio và Matt. Tôi nghĩ bây giờ tôi hiểu cách thức hoạt động của lớp (không phải ví dụ) và tôi cũng nghĩ rằng hành vi __str__ được yêu cầu rất khó đạt được. Tôi nghĩ metaclasses nên đủ tốt cho yêu cầu của tôi. :) – Tuxdude
Nếu bạn luôn nhận được 'AttributeError' kiểm tra câu trả lời khác, có cú pháp cho python3 (ví dụ này có vẻ là python2) – Chris