diff options
| author | Andreas Zeidler <az@zitc.de> | 2007-11-01 18:29:40 +0000 |
|---|---|---|
| committer | Andreas Zeidler <az@zitc.de> | 2007-11-01 18:29:40 +0000 |
| commit | bbebbe39d91805269ee822c889b8a0a29c6e28d7 (patch) | |
| tree | a1bbe61734c9f226e3ae0dcccff0900d261ed231 /src/zope | |
| parent | 74f17bede36778d6b083194397d1bc3cb9f247d7 (diff) | |
| download | zope-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.py | 12 |
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 |
