Tôi có một lớp được gọi là di động:Cách dễ dàng ghi đè các phương thức mặc định trong các lớp Python tùy chỉnh?
class Cell:
def __init__(self, value, color, size):
self._value = value
self._color = color
self._size = size
# and other methods...
Cell._value
sẽ lưu trữ một chuỗi, số nguyên, vv (bất cứ điều gì tôi đang sử dụng là đối tượng cho). Tôi muốn tất cả các phương pháp mặc định mà thông thường sẽ sử dụng "giá trị" của một đối tượng sử dụng <Cell object>._value
vì vậy mà tôi có thể làm:
>>> c1 = Cell(7, "blue", (5,10))
>>> c2 = Cell(8, "red", (10, 12))
>>> print c1 + c2
15
>>> c3 = Cell(["ab", "cd"], "yellow", (50, 50))
>>> print len(c3), c3
2 ['ab', 'cd']
# etc.
tôi có thể ghi đè lên tất cả các phương pháp mặc định:
class Cell:
def __init__(self, value, color, size):
# ...
def __repr__(self):
return repr(self._value)
def __str__(self):
return str(self._value)
def __getitem__(self, key):
return self._value[key]
def __len__(self):
return len(self._value)
# etc.
... nhưng có cách nào dễ hơn không?
tại sao một số nguyên, 'self._value', có khả năng được chỉ mục bằng khóa không? Và bạn đã bao giờ thử lấy chiều dài của một số nguyên chưa? Ngoài ra, điều này có lẽ không nên là cocmmunity wiki: không ai có được điểm để trả lời theo cách đó và chúng tôi yêu chúng tôi một số điểm ở đây tại SO. – aaronasterling
-1: đây không phải là wiki. –
@AaronMcSmooth 'self._value' có thể chứa bất kỳ loại dữ liệu nào vì vậy tôi muốn có tất cả các phương pháp khả dụng có sẵn. –