Movatterモバイル変換


[0]ホーム

URL:


[Python-ideas] Fwd: Define a method or function attribute outside of a class with the dot operator

Joao S. O. Buenojsbueno 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 torecall how Javascript does that:`function <name> () ` is an expression that returns the createdfunction, and thus can be assigned to anything onthe left side.Of course, that would throw us back to a way of thinking of inlinedefinition of multiline functions -which is another requested and unresolved thing in Python.(But we might require the `def` statement to still be aligned, atleast style-wise, and requirepeople to writeFoo.foo =\def (self, ...): ...)That said, this possibility in Javascript is the source of severeinconsistencies in how functions are declared across differentlibraries 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" - itcould be just "assign" instead)     js    -><-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>> py> Ham.spam.__name__> 'spam'>>> You might be thinking of __qualname__:>> py> Ham.spam.__qualname__> 'Ham.spam'>>>> Or say you have "def x[0]():" - is the name "x[0]" 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> mistake.>> 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 spam[0]function(): ...>>>>> --> Steve> _______________________________________________> Python-ideas mailing list>Python-ideas at python.org>https://mail.python.org/mailman/listinfo/python-ideas> Code of Conduct:http://python.org/psf/codeofconduct/


More information about the Python-ideasmailing list

[8]ページ先頭

©2009-2026 Movatter.jp