我正在使用以下课程轻松存储我的歌曲数据.
class Song:
"""The class to store the details of each song"""
attsToStore=('Name', 'Artist', 'Album', 'Genre', 'Location')
def __init__(self):
for att in self.attsToStore:
exec 'self.%s=None'%(att.lower()) in locals()
def setDetail(self, key, val):
if key in self.attsToStore:
exec 'self.%s=val'%(key.lower()) in locals()
Run Code Online (Sandbox Code Playgroud)
我觉得这比写出一个if/else块更具可扩展性.但是,eval似乎被认为是一种不良做法并且使用起来不安全.如果是这样,任何人都可以向我解释为什么并告诉我一个更好的方法来定义上面的类?
考虑像一个字典
mydict = {
'Apple': {'American':'16', 'Mexican':10, 'Chinese':5},
'Grapes':{'Arabian':'25','Indian':'20'} }
Run Code Online (Sandbox Code Playgroud)
如何访问该字典的特定元素?例如,我想在格式化Apple的第一个元素之后打印第一个元素,在我们的例子中只是'美国'?
附加信息上述数据结构是通过解析python函数中的输入文件创建的.一旦创建,它对于该运行保持不变.
我在我的函数中使用这个数据结构.
因此,如果文件发生更改,则下次运行此应用程序时,文件的内容会有所不同,因此此数据结构的内容将不同,但格式相同.所以你看我在我的功能中我不知道Apple的第一个元素是'美国'或其他任何东西所以我不能直接用'美国'作为关键
我想在API中提供自动字符串格式,以便:
my_api("path/to/{self.category}/{self.name}", ...)
Run Code Online (Sandbox Code Playgroud)
可以用格式化字符串中调出的属性值替换.
如何从Python格式字符串中提取关键字参数:
"non-keyword {keyword1} {{escaped brackets}} {} {keyword2}" => 'keyword1', 'keyword2'
Run Code Online (Sandbox Code Playgroud)