Class definition within function
Diez B. Roggisch
deets at nospam.web.de
Wed Aug 2 08:54:10 EDT 2006
Kay Schluehr wrote:
>
> 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)?
>
> def f():
> class C(object):
> def __init__(self):
> self.a = 'a'
> f.C = C
> return C()
>
>>>> f.C
> <class '__main__.C'>
Not working, unless f has been called at least once. But what I didn't know
(and always wondered) if the classdefinition inside a function can use the
outer scope - and apparently, it can! Cool.
def f(baseclass):
class C(baseclass):
def __init__(self):
self.a = 'a'
f.C = C
def foo(self):
print baseclass
return C()
c = f(object)
print f.C
c.foo()
Diez
More information about the Python-list
mailing list