Якщо я створюю власний клас у Python, яку функцію слід визначити, щоб дозволити використовувати оператор 'in', наприклад
class MyClass(object):
...
m = MyClass()
if 54 in m:
...
Якщо я створюю власний клас у Python, яку функцію слід визначити, щоб дозволити використовувати оператор 'in', наприклад
class MyClass(object):
...
m = MyClass()
if 54 in m:
...
Відповіді:
Більш повна відповідь:
class MyClass(object):
def __init__(self):
self.numbers = [1,2,3,4,54]
def __contains__(self, key):
return key in self.numbers
Тут ви отримаєте правду, запитуючи, чи 54 в м:
>>> m = MyClass()
>>> 54 in m
True
Дивіться документацію про перевантаження__contains__ .
Ви також можете ознайомитись із рамкою переопределення оператора інфіксації, яку я зміг використати для створення мови, що залежить від домену:
isтаis notоператорів. Якquery = tinydb.Query().field == value, щоб також вміти писатиQuery().field is not None. Але, здається, я залишився__eq__і__ne__на даний момент, що призводить до непітонічностіQuery().field != None. (сарк)