Movatterモバイル変換
[0]ホーム
[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]ページ先頭