[Python-ideas] Define a method or function attribute outside of a class with the dot operator
Steven D'Aprano
steve at pearwood.info
Wed Feb 15 06:43:12 EST 2017
More information about the Python-ideas mailing list
Wed Feb 15 06:43:12 EST 2017
- Previous message (by thread): [Python-ideas] Define a method or function attribute outside of a class with the dot operator
- Next message (by thread): [Python-ideas] Define a method or function attribute outside of a class with the dot operator
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Mon, Feb 13, 2017 at 06:14:34PM -0800, David Mertz wrote: > On Mon, Feb 13, 2017 at 5:48 PM, Steven D'Aprano <steve at pearwood.info> > wrote: > > > # the clean proposed way: > > def instance.method(self): # or MyClass.method > > ... > > > > But I don't think that we can reasonably argue that the suggested syntax > > isn't a clear, non-trivial win over the status quo, not unless we're > > also going to argue that introducing decorator syntax was a waste of > > time. > > > > I argue it's not a win specifically because we HAVE decorators already. I wouldn't word it quite like that, but I'll certainly agree that a decorator may be able to (almost) solve the method-injection use-case. Being able to write: @inject(Class) def method ... is almost as nice as def Class.method ... The one thing a decorator can't do is clean up after itself and avoid leaving an unneeded and unnecessary 'method' name in the current namespace. [...] > Moreover, I think your spelling of what it is sugar for is slightly off. > The `del method` at the end feels wrong to me. Specifically, in the > example I repeated of attaching callbacks, the reason I'd want a function > defined outside any particular class (or instance) scope is because I might > want to use the same function as a method of various classes. The existing syntax won't be going away, so anything you can do now, you will still be able to do :-) My gut feeling is that `def Class.method` should avoid polluting the current namespace. If you need access to the method again, you can always grab it from `Class.method`. -- Steve
- Previous message (by thread): [Python-ideas] Define a method or function attribute outside of a class with the dot operator
- Next message (by thread): [Python-ideas] Define a method or function attribute outside of a class with the dot operator
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-ideas mailing list