On Mon, 18 Oct 2010 17:17:52 +0200, Christian Heimes wrote:
> Don't nest classes. Just don't. This might be a valid and good approach
> in some programming languages but it's not Pythonic. Your code can
> easily be implemented without nested classes.
I'll accept that nested classes are unusual, but unPythonic? Never!
Here's a contrived example:
class K:
class Data(tuple):
def __init__(self, t):
a, b, c = t
self.a = a
self.b = b
self.c = c
def spam(self, a, b, c):
self.data = type(self).Data([a,b,c])
Of course, in Python 2.6 this *specific* example is better written using
namedtuple, but namedtuple is just a factory function for returning a
class!
class K:
# One-liner to create a nested class.
Data = namedtuple("Data", "a b c")
...
Either way, now you can subclass K by changing Data, without exposing
your private, internal classes to the rest of the module:
class K2(K):
class Data(K.Data):
def __init__(self, t):
t = (int(x) for x in t)
super(Data, self).__init__(t)
--
Steven
--
http://mail.python.org/mailman/listinfo/python-list