考虑以下示例

class Key:
    def __init__(self, s):
        self.s = s

d = {}

for x in range(1, 10000):
    t = Key(x)
    d[t] = x

这将创建 10000 个 key 。是否可以控制类key的对象创建,例如我们不能创建超过5个key类的对象。不应以任何方式更改循环。

最佳答案

您可以通过为类提供 __new__ method 来控制创建对象的方式或数量:

class Key(object):
    _count = 0

    def __new__(cls, s):
        if cls._count == 5:
            raise TypeError('Too many keys created')

        cls._count += 1
        return super(Key, cls).__new__(cls, s)

    def __init__(self,s):
        self.s = s
Key.__new__() 被调用来创建一个新的实例;在这里,我会记录创建了多少个,如果太多,则会引发异常。您还可以在字典中保留实例池,或以其他方式控制新实例的创建。

请注意,这仅适用于 new-style classes ,继承自 object

关于python - 如何限制对象创建,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25664060/

10-16 22:15