Movatterモバイル変換
[0]ホーム
[Python-ideas] Adding "Typed" collections/iterators to Python
Ethan Furmanethan at stoneleaf.us
Mon Dec 19 21:09:25 CET 2011
Nathan Rice wrote:> On Mon, Dec 19, 2011 at 1:01 PM, Ethan Furman <ethan at stoneleaf.us> wrote:>> Nathan Rice wrote:>>> [[1, 2], [3, 4], [5, 6]] could serve as an alternate>>> example of why you can't directly map child methods with the same>>> names.>>>> If you have to change the names, doesn't that negate the ability of "a>> reliable method to make functions operate on both scalar and>> vector values"?>> To clarify...>> Functions could reliably support both vector and scalar context, by> checking that a type contract exists.That sounds like type checking, which is not Pythonic. Duck-typing, on the other hand, *is*.def capitalize_me(some_obj): some_obj = some_obj.capitalize()--> capitalize_me("a simple string")"A simple string"--> capitalize_me(["a", "list", "of", "strings"])["A", "List", "Of", "Strings"]> Because of the name clash between parent and elementwise member> methods when dealing with collections of collections (and some other> classes), if the type contract provided "broadcast" versions of child> methods, they would have to be provided with under an alias, perhaps X> -> elementwise_X. I do not think people should be able to be> oblivious of when they are calling collection and member methods, that> encourages sloppy programming. I like the broadcast feature because> it makes it easier to write code in a clear left to right narrative> style, and that seems very pythonic to me compared with an> "inside-out" style.Duck-typing is neither oblivious, nor sloppy -- at least, not inherently. Is my sample code above not what you had in mind?~Ethan~
More information about the Python-ideasmailing list
[8]ページ先頭