[prev in list] [next in list] [prev in thread] [next in thread]
List: zope3-checkins
Subject: [Zope3-checkins] CVS: Packages/ZConfig - matcher.py:1.1.2.28
From: "Fred L. Drake\, Jr." <fred () zope ! com>
Date: 2002-12-31 22:06:13
[Download RAW message or body]
Update of /cvs-repository/Packages/ZConfig
In directory cvs.zope.org:/tmp/cvs-serv21657
Modified Files:
Tag: zconfig-schema-devel-branch
matcher.py
Log Message:
SectionValue: Override __setattr__() and __setitem__(), so that the
config values that are accessible by both name and position are kept
in sync.
=== Packages/ZConfig/matcher.py 1.1.2.27 => 1.1.2.28 ===
--- Packages/ZConfig/matcher.py:1.1.2.27 Thu Dec 19 16:11:22 2002
+++ Packages/ZConfig/matcher.py Tue Dec 31 17:06:12 2002
@@ -209,13 +209,18 @@
class SectionValue:
- """Generic 'bag-of-values' object for a section."""
+ """Generic 'bag-of-values' object for a section.
+
+ Derived classes should always call the SectionValue constructor
+ before attempting to modify self.
+ """
def __init__(self, attrnames, values, name, type):
- self._attrnames = attrnames
- self._values = values
- self.__name__ = name
- self.__type__ = type
+ d = self.__dict__
+ d['_attrnames'] = attrnames
+ d['_values'] = values
+ d['__name__'] = name
+ d['__type__'] = type
def __repr__(self):
if self.__name__:
@@ -235,9 +240,22 @@
raise TypeError("SectionValue does not support slicing")
return self._values[index]
+ def __setitem__(self, index, value):
+ if isinstance(index, types.SliceType):
+ raise TypeError("SectionValue does not support slicing")
+ self._values[index] = value
+
def __getattr__(self, name):
try:
i = self._attrnames.index(name)
except ValueError:
raise AttributeError, name
return self._values[i]
+
+ def __setattr__(self, name, value):
+ try:
+ i = self._attrnames.index(name)
+ except ValueError:
+ self.__dict__[name] = value
+ else:
+ self._values[i] = value
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic