python 自定义类实现__add__方法后被视为列表?
导致用不了自定义方法?
源码:
from typing import NoReturn
class LimitQueueInitMaxDataValueError(Exception):
def init(self, data: int | float | str):
self.data = data
def __str__(self):
return f"{self.data} is not int"
def max_data_error(data: int | float | str) -> NoReturn:
raise LimitQueueInitMaxDataValueError(data)
class LimitQueue:
def __init__(self, data: list | tuple, max_data: int):
if type(max_data) is int:
self.list_ = list(data)
self.max_data = int(max_data)
else:
max_data_error(max_data)
def __repr__(self):
return str(self.list_)
def __str__(self):
return str(self.list_)
def __add__(self, other: list | tuple):
return self.list_ + other
def __radd__(self, other: list | tuple):
return other + self.list_
def __iadd__(self, other: list | tuple):
self.list_.extend(other)
self._del_max("<")
return self.list_
def _del_max(self, exit_class_str: str):
if len(self.list_) > self.max_data:
if exit_class_str == "<":
while len(self.list_) > self.max_data:
del self.list_[0]
elif exit_class_str == ">":
while len(self.list_) > self.max_data:
del self.list_[-1]
def set_max_data(self, new_data: int):
if type(new_data) is int:
self.max_data = int(new_data)
self._del_max(">")
else:
max_data_error(new_data)
lq1 = LimitQueue([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], max_data=10)
print(type(lq1)) # 输出:<class 'list'> ?
lq1.set_max_data(100) #报错?