- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如果我运行这段代码,我会收到主题错误消息。但为什么?以及如何避免它让 C
类具有其父插槽?
class A():
__slots__ = ['slot1']
class B():
__slots__ = ['slot2']
class C(A, B):
__slots__ = []
最佳答案
简单来说,就是做不到。
如 Documentation 中所述,
Multiple inheritance with multiple slotted parent classes can be used, but only one parent is allowed to have attributes created by slots (the other bases must have empty slot layouts) - violations raise TypeError.
__slots__
背后的想法是为实例的内存布局中的每个属性保留特定的插槽。 A
和 B
试图为 slot1
和 slot2
属性保留内存布局的相同部分,并且C
不能为两个属性保留相同的内存。只是不兼容。
感谢评论中提到的JCode,修改后的方法正确。
但总有办法,如果有多个继承类时 __slots__
是必需的,我个人更喜欢使用包含所有必需插槽的公共(public)基。
import pympler.asizeof
class base():
__slots__ = ['a','b']
class A(base):
__slots__ = []
class B(base):
__slots__ = []
class C(A,B):
__slots__ = []
class D():
pass
#Update
bb = base()
bb.a = 100
bb.b = 100
print(pympler.asizeof.asizeof(bb))
a = A()
a.a = 100
a.b = 100
print(pympler.asizeof.asizeof(a))
c = C()
c.a = 100
c.b = 100
print(pympler.asizeof.asizeof(c))
d = D()
d.a = 100
d.b = 100
print(pympler.asizeof.asizeof(d))
更新这 4 个值将是 88、88、88、312。尽管 __slots__
已保留。
关于Python 3.6.5 "Multiple bases have instance lay-out conflict"具有 __slots__ 的类的多重继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53060607/
我的侧边栏位于路由器 View 上方,但它应该“阻挡”空间。 在我的App.vue中有以下代码
我正在为我本地的超市开发一个电子商务网站。 在过滤品牌“Lay's”上的产品时,url 将其显示为“layaposs”。这应该被标准化为简单的“放置”。 我想知道为什么会发生这种情况以及如何使用 Ru
我正在尝试在一个项目中使用依赖项中的组件,该项目大多是从 electron-react-boilerplate 新 fork 的。 .布局困惑(见下图)。试过react-chat-window , r
我想在 linux 中编写一个 bash 脚本,显示我的互联网在特定日期时间 + 天的下载速度,然后是下载速度。 信息必须存储在同一行的文件中,我想要第二个脚本以一种“图形”的形式显示速度,如下所示:
我在一个文件夹中有一个 Visual Studio 项目,比如 C:\project_name\app_name.csproj,它的结构类似于 C:\project_name\controllers。
我想用两个类创建一个类:collections.OrderedDict 和 collections.DefaultDict。这样我就可以得到一个有序的字典,并为正在访问的不存在的键设置一个默认值。有哪
我正在使用带有 dagre 布局的 cytoscapejs ( https://github.com/cytoscape/cytoscape.js-dagre )。我对这一扩展感到非常满意,但是,有一
它的外观应该如何(并且确实在一台机器上看起来如何): 然后,当移动到另一台计算机时,这是结果。好像没有渲染布局和CSS,但是在断点通过它时似乎会渲染: 两台电脑都运行带有 .NET Framework
这既是一个问题也是一个 部分 解决方案。 *示例项目在这里: https://github.com/JosephLin/TransitionTest 问题一: 使用时 transitionFromVi
我在设置 div 标签的样式时遇到问题。我想要一个从 left:300px 开始并跨越到浏览器屏幕末尾的 div 标签。但是如果我设置 width:100%,div 标签将超出浏览器屏幕。 最佳答案
我在模拟器上运行应用程序时抛出了未知异常: The _ScaffoldLayout custom multichild layout delegate forgot to lay out the fo
如果我运行这段代码,我会收到主题错误消息。但为什么?以及如何避免它让 C 类具有其父插槽? class A(): __slots__ = ['slot1'] class B():
我创建并训练了一个模型,用于根据编码为字符整数序列的发票字符串对啤酒名称进行分类。 batch_size = 512 # Batch size for training. epochs = 5 #
我是一名优秀的程序员,十分优秀!