python 从字符串调用 class 实例
python call class instance from string
我声明了一个 class:
class Persons:
def __init__(self, person_id, value:
self.person_id = person_id
self.value = value
我创建了一个实例:
p1 = Persons("p1", "0")
现在我想从输入中获取一个字符串来告诉我此人的 ID,然后将其值从“0”切换为“1”:
inp_string = input("Which person should have its value changed?")
name = "p" + inp_string
name.value = "1"
所以我想将字符串 'name' 更改为同名的 class 实例。我不介意 select 这个人的名字 (p1) 或 person_id ("p1")。哪个都好。
只需创建一个人的字典:
persons_dict = {'p1': Persons("p1", "0")}
inp_string = input("Which person should have its value changed?")
persons_dict[inp_string].value = '1'
inp_string
应该是 p1
您可以轻松地用 class:
包裹它
In [32]: class Person:
...: def __init__(self, person_id, value):
...: self.person_id = person_id
...: self.value = value
...: def __repr__(self):
...: return f'Person<person_id: {self.person_id}, value: {self.value}>'
...:
In [33]: class Persons:
...: def __init__(self):
...: self.persons = {}
...: def add_person(self, person_id, value):
...: if person_id in self.persons:
...: raise ValueError('person_id already exists')
...: self.persons[person_id] = Person(person_id, value)
...: def get_person_by_id(self, person_id):
...: return self.persons[person_id]
...: def __repr__(self):
...: return f'Persons<{self.persons}>'
...:
In [34]: persons = Persons()
In [35]: persons.add_person('p1', '0')
In [36]: persons.add_person('p2', '2')
In [37]: persons
Out[37]: Persons<{'p1': Person<person_id: p1, value: 0>, 'p2': Person<person_id: p2, value: 2>}>
In [38]: persons.get_person_by_id('p1').value = '1'
In [39]: persons
Out[39]: Persons<{'p1': Person<person_id: p1, value: 1>, 'p2': Person<person_id: p2, value: 2>}>
我声明了一个 class:
class Persons:
def __init__(self, person_id, value:
self.person_id = person_id
self.value = value
我创建了一个实例:
p1 = Persons("p1", "0")
现在我想从输入中获取一个字符串来告诉我此人的 ID,然后将其值从“0”切换为“1”:
inp_string = input("Which person should have its value changed?")
name = "p" + inp_string
name.value = "1"
所以我想将字符串 'name' 更改为同名的 class 实例。我不介意 select 这个人的名字 (p1) 或 person_id ("p1")。哪个都好。
只需创建一个人的字典:
persons_dict = {'p1': Persons("p1", "0")}
inp_string = input("Which person should have its value changed?")
persons_dict[inp_string].value = '1'
inp_string
应该是 p1
您可以轻松地用 class:
包裹它In [32]: class Person:
...: def __init__(self, person_id, value):
...: self.person_id = person_id
...: self.value = value
...: def __repr__(self):
...: return f'Person<person_id: {self.person_id}, value: {self.value}>'
...:
In [33]: class Persons:
...: def __init__(self):
...: self.persons = {}
...: def add_person(self, person_id, value):
...: if person_id in self.persons:
...: raise ValueError('person_id already exists')
...: self.persons[person_id] = Person(person_id, value)
...: def get_person_by_id(self, person_id):
...: return self.persons[person_id]
...: def __repr__(self):
...: return f'Persons<{self.persons}>'
...:
In [34]: persons = Persons()
In [35]: persons.add_person('p1', '0')
In [36]: persons.add_person('p2', '2')
In [37]: persons
Out[37]: Persons<{'p1': Person<person_id: p1, value: 0>, 'p2': Person<person_id: p2, value: 2>}>
In [38]: persons.get_person_by_id('p1').value = '1'
In [39]: persons
Out[39]: Persons<{'p1': Person<person_id: p1, value: 1>, 'p2': Person<person_id: p2, value: 2>}>