From 75b64e65f10b04e3a2bdac6d0e3db289bbd796cb Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Sun, 16 Jan 2005 00:16:11 +0000 Subject: [PATCH] Use decorators. --- Demo/newmetaclasses/Eiffel.py | 6 ++---- Lib/UserDict.py | 2 +- Lib/tarfile.py | 15 +++++---------- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/Demo/newmetaclasses/Eiffel.py b/Demo/newmetaclasses/Eiffel.py index 78a8bb5bb96..04f991585cb 100644 --- a/Demo/newmetaclasses/Eiffel.py +++ b/Demo/newmetaclasses/Eiffel.py @@ -9,6 +9,7 @@ class EiffelBaseMetaClass(type): return super(EiffelBaseMetaClass, meta).__new__(meta, name, bases, dict) + @classmethod def convert_methods(cls, dict): """Replace functions in dict with EiffelMethod wrappers. @@ -30,11 +31,10 @@ class EiffelBaseMetaClass(type): if pre or post: dict[k] = cls.make_eiffel_method(dict[m], pre, post) - convert_methods = classmethod(convert_methods) - class EiffelMetaClass1(EiffelBaseMetaClass): # an implementation of the "eiffel" meta class that uses nested functions + @staticmethod def make_eiffel_method(func, pre, post): def method(self, *args, **kwargs): if pre: @@ -49,8 +49,6 @@ class EiffelMetaClass1(EiffelBaseMetaClass): return method - make_eiffel_method = staticmethod(make_eiffel_method) - class EiffelMethodWrapper: def __init__(self, inst, descr): diff --git a/Lib/UserDict.py b/Lib/UserDict.py index 703f118a428..71687038743 100644 --- a/Lib/UserDict.py +++ b/Lib/UserDict.py @@ -63,12 +63,12 @@ class UserDict: return self.data.popitem() def __contains__(self, key): return key in self.data + @classmethod def fromkeys(cls, iterable, value=None): d = cls() for key in iterable: d[key] = value return d - fromkeys = classmethod(fromkeys) class IterableUserDict(UserDict): def __iter__(self): diff --git a/Lib/tarfile.py b/Lib/tarfile.py index 0dc7a4270be..9d0061592ef 100644 --- a/Lib/tarfile.py +++ b/Lib/tarfile.py @@ -656,6 +656,7 @@ class TarInfo(object): def __repr__(self): return "<%s %r at %#x>" % (self.__class__.__name__,self.name,id(self)) + @classmethod def frombuf(cls, buf): """Construct a TarInfo object from a 512 byte string buffer. """ @@ -699,8 +700,6 @@ class TarInfo(object): tarinfo.name += "/" return tarinfo - frombuf = classmethod(frombuf) - def tobuf(self): """Return a tar header block as a 512 byte string. """ @@ -858,6 +857,7 @@ class TarFile(object): # the super-constructor. A sub-constructor is registered and made available # by adding it to the mapping in OPEN_METH. + @classmethod def open(cls, name=None, mode="r", fileobj=None, bufsize=20*512): """Open a tar archive for reading, writing or appending. Return an appropriate TarFile class. @@ -923,8 +923,7 @@ class TarFile(object): raise ValueError, "undiscernible mode" - open = classmethod(open) - + @classmethod def taropen(cls, name, mode="r", fileobj=None): """Open uncompressed tar archive name for reading or writing. """ @@ -932,8 +931,7 @@ class TarFile(object): raise ValueError, "mode must be 'r', 'a' or 'w'" return cls(name, mode, fileobj) - taropen = classmethod(taropen) - + @classmethod def gzopen(cls, name, mode="r", fileobj=None, compresslevel=9): """Open gzip compressed tar archive name for reading or writing. Appending is not allowed. @@ -970,8 +968,7 @@ class TarFile(object): t._extfileobj = False return t - gzopen = classmethod(gzopen) - + @classmethod def bz2open(cls, name, mode="r", fileobj=None, compresslevel=9): """Open bzip2 compressed tar archive name for reading or writing. Appending is not allowed. @@ -1002,8 +999,6 @@ class TarFile(object): t._extfileobj = False return t - bz2open = classmethod(bz2open) - # All *open() methods are registered here. OPEN_METH = { "tar": "taropen", # uncompressed tar