[Python-ideas] JavaScript-Style Object Creation in Python (using a constructor function instead of a class to create objects)

Sven R. Kunze srkunze at mail.de
Wed May 17 13:52:02 EDT 2017


Hi Stephan,
hi Ivan,

On 17.05.2017 18:48, Ivan Levkivskyi wrote:
> from typing import NamedTuple
>
> class Foo(NamedTuple):
>     """Foo is a very important class and
>     you should totally use it.
>     """
>     bar: int
>     baz: int = 0
>
>     def grand_total(self):
>         return self.bar + self.baz
>
> typing.NamedTuple supports docstrings, user-defined methods, and 
> default values.

I hope the second ': int' can be omitted because 0 already is an int.


This makes me wonder three things:
1) Michel, can newcomers differentiate between when to use ' : ' and 
when to use ' = ' and a combination thereof?
2) There must be a lot of cornercases where people rewrite Foo to be a 
normal class in the end, right?
3) If one doesn't need tuple-__dunder__ methods, a "normal" class would 
even need 1 line less. (+ Stephan's second point)


So, this still leaves those missing __dunder__ magic methods doing the 
right thing at the right time.


Sven
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20170517/54352fdc/attachment.html>


More information about the Python-ideas mailing list