Вы можете решить эту проблему, добавив метод __contains__()
в свой класс CreateGraph
, который ожидает аргумент string с именем name
. Как это сделать, а затем использовать его, как показано в коде ниже.
Примечание: Я изменил все имена ваших классов на стиль CapitalizedWords, чтобы соответствовать правилам кодирования PEP8 (в разделе Условные обозначения ).
class Member:
def __init__(self, name):
self.name = name
def get_name(self, name):
self.name = name
def __str__(self):
return self.name
class CreateGraph:
def __init__(self):
self.some_dict = dict()
def add(self, name):
if name is None:
raise TypeError
if name not in self.some_dict:
self.some_dict[name] = Member(name)
else:
print("{} is already present".format(name))
def __contains__(self, name): # <-- METHOD ADDED.
return name in self.some_dict
some_graph = CreateGraph()
list_person = ['abc', 'xyz', 'mno', 'pqr']
for person in list_person:
some_graph.add(person)
print("checking these names in list_person:", list_person)
for person in list_person:
if person in some_graph:
print("Present")
else:
print("Not present")
Вот вывод:
checking these names in list_person: ['abc', 'xyz', 'mno', 'pqr']
Present
Present
Present
Present