summaryrefslogtreecommitdiff
path: root/src/zope
diff options
context:
space:
mode:
authorAndreas Zeidler <az@zitc.de>2007-11-01 18:29:40 +0000
committerAndreas Zeidler <az@zitc.de>2007-11-01 18:29:40 +0000
commitbbebbe39d91805269ee822c889b8a0a29c6e28d7 (patch)
treea1bbe61734c9f226e3ae0dcccff0900d261ed231 /src/zope
parent74f17bede36778d6b083194397d1bc3cb9f247d7 (diff)
downloadzope-interface-bbebbe39d91805269ee822c889b8a0a29c6e28d7.tar.gz
using `__setattr__` instead of `property` speeds up zope start-up time again, since getting the value for `__bases__` through `__dict__` adds up with almost 200.000 calls; of course, there's some overhead, since `__setattr__` gets called for the other attributes as well, but overall start-up is still faster
Diffstat (limited to 'src/zope')
-rw-r--r--src/zope/interface/interface.py12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/zope/interface/interface.py b/src/zope/interface/interface.py
index 4e18f7d..8e2e8e6 100644
--- a/src/zope/interface/interface.py
+++ b/src/zope/interface/interface.py
@@ -274,7 +274,7 @@ class Specification(SpecificationBase):
def __setBases(self, bases):
# Register ourselves as a dependent of our old bases
- for b in self.__bases__:
+ for b in getattr(self, '__bases__', ()):
b.unsubscribe(self)
# Register ourselves as a dependent of our bases
@@ -284,11 +284,11 @@ class Specification(SpecificationBase):
self.changed(self)
- __bases__ = property(
-
- lambda self: self.__dict__.get('__bases__', ()),
- __setBases,
- )
+ def __setattr__(self, name, value):
+ if name == '__bases__':
+ self.__setBases(value)
+ else:
+ self.__dict__[name] = value
def changed(self, originally_changed):
"""We, or something we depend on, have changed