Chris Angelico <ros...@gmail.com>:

> C++ has something very like this, with the 'auto' keyword. It's not
> particularly useful for the examples you give, but can be much more so
> when you have templates, iterators, and so on - where the exact type
> declaration might be a couple dozen characters of pure syntactic salt,
> since you're initializing it to some function's return value.

Java has a widely practiced ideal that you should not tie variables to
class types but instead stick to interface types. Thus, you want to
declare:

   List<Integer> li = new LinkedList<Integer>();

Thing is, though, you can't automatically guess this. After all, you
might be after:

   Iterable<Integer> li = new LinkedList<Integer>();

or maybe:

   Collection<Integer> li = new LinkedList<Integer>();

This principle doesn't concern only collections. A well-designed
application should specify interfaces for pretty much all classes to
separate design blocks and APIs from implementations du jour.

(Again, something that has no relevance for Python users.)


Marko
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to