考虑以下示例
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/