Nếu tôi đang tạo lớp riêng của mình trong Python, tôi nên xác định hàm nào để cho phép sử dụng toán tử 'in', vd
class MyClass(object):
...
m = MyClass()
if 54 in m:
...
Nếu tôi đang tạo lớp riêng của mình trong Python, tôi nên xác định hàm nào để cho phép sử dụng toán tử 'in', vd
class MyClass(object):
...
m = MyClass()
if 54 in m:
...
Câu trả lời:
Một câu trả lời đầy đủ hơn là:
class MyClass(object):
def __init__(self):
self.numbers = [1,2,3,4,54]
def __contains__(self, key):
return key in self.numbers
Ở đây bạn sẽ nhận được True khi hỏi nếu 54 trong m:
>>> m = MyClass()
>>> 54 in m
True
Bạn cũng có thể muốn xem qua khung ghi đè toán tử infix mà tôi có thể sử dụng để tạo ngôn ngữ dành riêng cho tên miền:
is
vàis not
toán tử. Giống như mộtquery = tinydb.Query().field == value
, để cũng có thể viếtQuery().field is not None
. Nhưng có vẻ như tôi còn lại__eq__
và__ne__
trong thời gian này, điều này dẫn đến sự không lành mạnhQuery().field != None
. (mỉa mai)