Có thể quá tải [] (__getitem__)
Phương thức chuỗi và toán tử Python bằng cách sử dụng tham chiếu bộ nhớ ban đầu.Quá tải [] toán tử python và các phương thức chuỗi sử dụng tham chiếu bộ nhớ
Hãy tưởng tượng tôi có một lớp Math
chấp nhận một danh sách các số nguyên, như thế này:
class Math(object):
def __init__(self, *args, **kwargs):
assert(all([isinstance(item, int) for item in list(args)]))
self.list = list(args)
def add_one(self):
for index in range(len(self.list)):
self.list[index] += 1
Và tôi muốn làm một cái gì đó như thế này:
instance = Math(1,2,3,4,5)
instance[2:4].add_one()
Sau khi thực thi mã này instance.list
nên là [1,2,4,5,5]
, điều này có khả thi không?
Tôi biết tôi có thể làm điều gì đó như add_one(2,4)
, nhưng đây không phải là kiểu API tôi muốn có nếu có thể.
Cảm ơn
'xrange (* self.slice.indices (len (self.math.list))) 'cảm thấy hết sức vô lý. Có cách nào tốt hơn? – Eric
Ngoài ra, bạn đang trộn 'self.fields' và' self.list' – Eric
@Eric: Tôi đã xóa Math.add_one không cần thiết, và vâng rằng xrange (* ...) có vẻ hơi rườm rà, nhưng tôi không biết một cách ngắn hơn. –