Phi*_*hil 2 python class python-2.7
当class定义a(例如 class MyClass)时,可以替换它返回到 len(my_class_instance)使用def的内容__len__(self).
如何class @property在以下场景中将其应用于自定义?
class CarWash(object):
def __init__(self):
self._queue = [1, 2, 3]
@property
def queue(self):
return self._queue
Run Code Online (Sandbox Code Playgroud)当len(car_wash.queue)调用时,我不希望返回列表的len但是想用自定义__len__过程替换它,因为我想首先查询db.
我怎样才能做到这一点?
如果您不想list.__len__被呼叫,请不要返回列表:
def CarQueue(list):
def __len__(self):
return something_dubious()
# if you're going to override len, make sure to overide `__iter__`
# and `__getitem__`
class CarWash(object):
def __init__(self):
self._queue = CarQueue([1, 2, 3])
@property
def queue(self):
return self._queue
Run Code Online (Sandbox Code Playgroud)