gpt4 book ai didi

python - 获取派生类的所有 __slots__

转载 作者:太空狗 更新时间:2023-10-29 17:04:26 29 4
gpt4 key购买 nike

我需要用 None 初始化一个实例的所有插槽。如何获取派生类的所有插槽?

示例(不起作用):

class A(object):
__slots__ = "a"

def __init__(self):
# this does not work for inherited classes
for slot in type(self).__slots__:
setattr(self, slot, None)

class B(A):
__slots__ = "b"

我可以使用一个额外的类属性来保存所有类的插槽(包括继承的),比如

class A(object):
__slots__ = "a"
all_slots = "a"

def __init__(self):
# this does not work for inherited classes
for slot in type(self).all_slots:
setattr(self, slot, None)

class B(A):
__slots__ = "b"
all_slots = ["a", "b"]

但这似乎不是最理想的。

如有任何意见,我们将不胜感激!

干杯,

一月

最佳答案

首先是

class A(object):
__slots__ = ('a',)
class B(A):
__slots__ = ('b',)

制作一个包含 B 或其任何父类的 __slots__ 所包含的所有元素的列表将是:

from itertools import chain
slots = chain.from_iterable(getattr(cls, '__slots__', []) for cls in B.__mro__)

关于python - 获取派生类的所有 __slots__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6720747/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com