Python 向使用_插槽的对象添加属性__
我想向使用插槽的对象添加一个属性。我知道这是一个黑客,不应该使用 但是有没有办法绕过插槽的限制?没有。如果您没有将“\uuu dict\uuuuu”声明为插槽之一,那么该类具有固定的底层结构布局,没有用于动态定义属性的空间;你能做的最好的事情就是从头开始重新定义类并替换它,希望在你开始之前没有人创建一个原始类的实例,或者创建一个不需要在主体中做任何特殊事情的子类,只需传递;如果它不声明uuuu slots uuuuuuuuuuuu,它将以uuuu dict uuuuuuuu/uuuuuuuu weakref uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 即使在定义类之后更改_u插槽_uu也不会起任何作用;插槽在该点烘焙到类中;您可以删除MyClass。\uuuuu插槽\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 你基本上有两个选择 不要使用插槽。您将能够向hearts内容添加属性,并且根据您使用该类的方式,您可能甚至不会注意到性能差异 提前添加属性,但将其设置为“无”或sentinal值,然后填充属性,而不是稍后创建属性 如果您试图使类上的属性动态化,那么“插槽”根本不是您的正确选择。您可以通过创建一个同名的子类,然后用其子类替换父类来修改“插槽”。请注意,您可以对任何模块中声明和使用的类执行此操作,而不仅仅是您的 还要注意,这个问题已经回答了好几次了。有关更多详细信息,请参阅。Python 向使用_插槽的对象添加属性__,python,slots,Python,Slots,我想向使用插槽的对象添加一个属性。我知道这是一个黑客,不应该使用 但是有没有办法绕过插槽的限制?没有。如果您没有将“\uuu dict\uuuuu”声明为插槽之一,那么该类具有固定的底层结构布局,没有用于动态定义属性的空间;你能做的最好的事情就是从头开始重新定义类并替换它,希望在你开始之前没有人创建一个原始类的实例,或者创建一个不需要在主体中做任何特殊事情的子类,只需传递;如果它不声明uuuu slots uuuuuuuuuuuu,它将以uuuu dict uuuuuuuu/uuuuuuuu w
实际上,在您询问时没有我的答案,但有其他答案的问题=如果您详细说明为什么要这样做,它可能会帮助我们解决您的实际问题。您想为实例添加属性还是为类添加槽?