我有一个python模块model,基本上有以下内容:
class Database:
class Publiation(object):
pass
class Article(Publication):
pass
class Book(Publication):
pass
class AnotherDatabase:
class Seminar(object):
pass
...
Run Code Online (Sandbox Code Playgroud)
我将数据库中的对象定义为嵌套在主类下的类,以便更有特色地组织它们.从大型XML文件解析对象,这需要时间.我想挑选导入的对象,以便在更短的时间内加载它们.
我收到错误:
pickle.PicklingError:不能pickle:它找不到project.model.Article
这个课程现在project.model.Article不是project.model.Database.Article定义的.我可以修复此错误并保持类嵌套如上吗?通过嵌套来组织类是不是一个坏主意?
创建内部类时,解释器无法知道其内部定义的类,此信息不会被记录.这就是为什么pickle不知道在哪里寻找类文章.
因此,使用内部类时存在许多问题,而不仅仅是在酸洗时.如果模块范围内的类具有相同的名称,则会引入很多歧义,因为没有简单的方法可以区分这两种类型(例如,使用repr或调试时).
因此,除非您有充分的理由这样做,否则通常最好避免使用Python中的嵌套类.
| 归档时间: |
|
| 查看次数: |
1938 次 |
| 最近记录: |