[Python-ideas] Fwd: Define a method or function attribute outside of a class with the dot operator
Joao S. O. Bueno
jsbueno at python.org.br
Fri Feb 10 07:13:46 EST 2017
I am definetelly -1 to this idea.
But since you are discussing this seriously, one nice thing is to
`function <name> () ` is an expression that returns the created
function, and thus can be assigned to anything on
the left side.
Of course, that would throw us back to a way of thinking of inline
definition of multiline functions -
which is another requested and unresolved thing in Python.
(But we might require the `def` statement to still be aligned, at
least style-wise, and require
people to write
def (self, ...): ...
inconsistencies in how functions are declared across different
libraries and projects, and IMHO, makes reading (and writting) a real pain.
(And, as stated above, a two line decorator could make for the patching -
it does not need to have such an ugly name as "monkey_patch" - it
could be just "assign" instead)
On 10 February 2017 at 09:51, Steven D'Aprano <steve at pearwood.info> wrote:
> On Fri, Feb 10, 2017 at 10:05:30PM +1100, Chris Angelico wrote:
>> * What would the __name__ be? In "def ham.spam():", is the name "spam"
>> or "ham.spam"?
> "spam" of course, just like it is now:
> py> class Ham:
> ... def spam(self):
> ... ...
> py> Ham.spam.__name__
> You might be thinking of __qualname__:
> py> Ham.spam.__qualname__
>> Or say you have "def x():" - is the name "x" or
>> something else?
> I wouldn't allow that. I feel that "any assignment target at all" is an
> over-generalisation, a case of YAGNI.
> It is relatively easy to change our mind and add additional cases in the
> future, but very difficult to remove them if they turn out to be a
> My intuition tells me that we should allow :
> def name dot name (args):
> possibly even more than one dot:
> def name dot name dot name ... (args):
> but no additional cases:
> # syntax error
> def spamfunction(): ...
> Python-ideas mailing list
> Python-ideas at python.org
> Code of Conduct: http://python.org/psf/codeofconduct/
More information about the Python-ideas