Как отследить несколько экземпляров класса из записи пользователя в словаре - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь установить функцию, которая отслеживает каждое множественное создание класса, используя пользовательский ввод в качестве ключа и значения (имя объекта). Эта первая часть, кажется, работает, но затем я хочу иметь возможность искать, используя ключевые слова «name» и любой другой атрибут в данном случае «age», и если в словаре вернуть имя и атрибут.

Проблема, которую я пытался решить, состоит в том, чтобы взять запись пользователя и сделать ее именем и строкой представления класса, а затем записать список всех экземпляров, сделанных для этих имен пользователей. Единственный способ сделать это - создать экземпляр из контейнера, такого как список или словарь.

class text:
    def __init__(self, name, age):
        self.name=name
        self.age=age

    def __repr__(self):
        return self.name

lst={}
def user():    
    x=input("Enter Class name: ")
    lst[x]= x
    y=input("Enter age: ")
    create(x,y)

def create(x,y):
    lst[x]=text(lst[x], y)

def search(x,m):

    for i in lst:
        if i == x:
            return(lst[x].m)
        else:
            print("not found")

В функции поиска я ожидаю, что lst [x] будет передана пользовательская строка ввода x и найден связанный объект, который она выполняет. Затем я ожидаю, что m передаст строковый атрибут, переданный при поиске, в этом случае age, а затем напечатает name и age. У меня было это работает, но теперь кажется, что прошло м, а не возраст? Поэтому, используя Search ('martin', 'age'), я ожидал, что он вернется; Мартин 50 если пользователь () ввел x = 'martin' и y = 50.

Я был бы благодарен за любую помощь в получении m для передачи атрибута .age ?? Спасибо Martin

1 Ответ

0 голосов
/ 16 января 2019
class text:
    def __init__(self, name, age):
        self.name=name
        self.age=age

    def __repr__(self):
        return self.name

lst={}

def user():    
    x=input("Enter Class name: ")
    lst[x]= x
    y=input("Enter age: ")
    create(x,y)

def create(x,y):
    lst[x]=text(lst[x], y)

def search(x,name):

    **k = lst.get(x,None)
    if k == None:
        print("not found")
    else:
        return getattr(lst[x], name)**
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...