Mih*_* L. 0 python string variables object
我有一个字符串列表,每个字符串代表书籍和他们的一些属性,例如
# each book followed by the price and the name of the genre
book_names = ['love 3 romance',
'rose 6 drama',
'flower 7 nice_story']
Run Code Online (Sandbox Code Playgroud)
我想以某种方式为每本书创建一个新对象,并使其字符串描述属性的其他部分.
这是我尝试过的(显然,它不起作用):
class Book_Class():
price=0
genre=''
book_content=[]
for i in book_names:
name=i.split()[0]
name=Book_Class()
name.price=i.split()[1]
name.genre=i.split()[2]
Run Code Online (Sandbox Code Playgroud)
也许有一种简单的方法来实现我所追求的目标(请告诉我,因为我对编程很新...).
有几种方法:
使用字典,在很多情况下绰绰有余:
keys = ['name', 'price', 'gender']
book = { k: v for k, v in zip(keys, i.split()) }
Run Code Online (Sandbox Code Playgroud)给你的Book班级一个有意义的__init__初始化者:
class Book(object):
name = ''
price = 0
gender = None
def __init__(self, name, price, gender):
self.name = name
self.price = price
self.gender = gender
Run Code Online (Sandbox Code Playgroud)
并将解析后的值传递给:
Book(*i.split())
Run Code Online (Sandbox Code Playgroud)作为最后的手段,您可以使用setattr在现有对象上设置任意属性:
book = Book()
for attr, value in zip(keys, i.split()):
setattr(book, attr, value)
Run Code Online (Sandbox Code Playgroud)