Need help with Python scoping rules

Stephen Fairchild somebody at somewhere.com
Tue Aug 25 20:59:45 EDT 2009


You are trying to run code in a class that does not exist yet. 


def Demo():
    def fact(n):
        if n < 2:
            return 1
        else:
            return n * fact(n - 1)
    return type("Demo", (object,), {"fact": staticmethod(fact), "_classvar":
fact(5)})
Demo = Demo()

d = Demo()
print d._classvar    # prints 120
print d.fact(7)      # prints 5040
print Demo           # prints <class '__main__.Demo'>

-- 
Stephen Fairchild



More information about the Python-list mailing list