max*_*max 1 python string class
我需要解析一些文本文件,为文本中遇到的各种实体创建对象,并将它们放在一些数据结构(例如,列表)中以供进一步处理.文字示例:
laptop
17" dell, weight: 12 lb
desktop
24" hp
Run Code Online (Sandbox Code Playgroud)
我事先知道文本中可能存在哪些实体,以及它们应该具有哪些属性.在这个例子中,我已经定义了笔记本电脑和桌面类(可能是类计算机的子类).解析器只需要创建对象laptop('dell',17,12)和dekstop('hp',24).
如果我遵循这条路线,我需要从字符串中检索类名,并创建这些类的对象.这是Pythonic的做事方式吗?如果是这样,最好的方法是什么(使用Python 3.1)?如果没有,我该怎么办呢?
谢谢!
什么
Kat*_*iel 11
如果在类中定义了类computers.py,那么你可以这样做
import computers
getattr( computers, "Laptop" )( <params> )
Run Code Online (Sandbox Code Playgroud)
实例化一个computers.Laptop.如果它们是在您运行代码的同一文件中定义的(因此它们是全局变量),您可以这样做
globals()[ "Laptop" ]
Run Code Online (Sandbox Code Playgroud)
但这不那么优雅; 将它们放在一个单独的范围内会更好.
或者,如果你想要一个更强大的映射(比如你想要"Nettop","Lapbook"和"Laptop"都要实例化Laptop),你可以保持字符串到它们相应的构造函数的映射,并使用它:
mapping = { "Laptop": Laptop, "Nettop": Laptop, ... }
mapping[ "Laptop" ]()
Run Code Online (Sandbox Code Playgroud)
您可以使用以下代码按名称创建类的实例
obj = globals()[classname]()
Run Code Online (Sandbox Code Playgroud)
哪里classname是一个字符串