Class definition within function

Diez B. Roggisch deets at nospam.web.de
Wed Aug 2 08:11:32 EDT 2006


Tomi Lindberg wrote:

> Hi,
> 
> With the following function definition, is it possible to
> create an instance of class C outside the function f (and if
> it is, how)? And yes, I think this is one of those times
> when the real question is why :)
> 
>  >>> def f():
> class C(object):
> def __init__(self):
> self.a = 'a'
> return C()
> 
>  >>> x = f()
>  >>> x.a
> 'a'
>  >>> y=f.C()
> 
> Traceback (most recent call last):
>    File "<pyshell#22>", line 1, in -toplevel-
>      y=f.C()
> AttributeError: 'function' object has no attribute 'C'

No, its not. Only inside of it. And the question really is: why? If you need
a class that can be instantiated regardless of the execution of f, make it
a globally visible class. If it depends on something f computes, make it a
function-local one (if you like)

Diez



More information about the Python-list mailing list