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