如果我定义__getstate__()
and __setstate__()
在父类中,子类可以继承这些方法吗?有一些相关的讨论这个答案,但仅限于前面带有双下划线 (dunder) 的方法。
一些额外的信息:
- 我这样做是为了定义我的类的序列化(pickling)行为。
- Python 2.7
是的,dunder 方法可以很好地继承。从那里的答案来看,链接的文档是保留的标识符类别:
__*__
系统定义的名称。这些名称由解释器及其实现(包括标准库)定义。当前的系统名称在特殊方法名称部分和其他地方讨论。 Python 的未来版本可能会定义更多内容。Any use of __*__
在任何上下文中,如果不遵循明确记录的使用,名称可能会在没有警告的情况下被破坏。
这是一个单独的班级 from __*
类私有 names.
链接的其他部分是标识符(名称)这也许更清楚:
当类定义中文本出现的标识符以两个或多个下划线字符开头时并且不以两个或多个下划线结尾,它被认为是一个私人姓名那个班级的。
粗体强调我的;以两个下划线开头并以两个下划线结尾的名称不是类私有 names.
注意both名称的类是继承的(继承是通过在类的 MRO 中查找属性名称来实现的)。名称被破坏并不会阻止它们被继承,这是why名字一开始就被破坏了。通过在这些名称前面加上前缀_ClassName
子类可以重复使用该名称并且自动不会发生冲突,因为它们有自己的名称_SubClass
prefix.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)