From: Karsten Wutzke on 25 Jul 2010 11:41 What's wrong with: class Enum(RootFragment): __jpaTypes = { # complete! 'CascadeType': Enum("javax.persistence.CascadeType"), 'DiscriminatorType': Enum("javax.persistence.DiscriminatorType"), 'EnumType': Enum("javax.persistence.EnumType"), 'FetchType': Enum("javax.persistence.FetchType"), 'FlushModeType': Enum("javax.persistence.FlushModeType"), 'GenerationType': Enum("javax.persistence.GenerationType"), 'InheritanceType': Enum("javax.persistence.InheritanceType"), 'LockModeType': Enum("javax.persistence.LockModeType"), 'PersistenceContextType': Enum("javax.persistence.PersistenceContextType"), 'TemporalType': Enum("javax.persistence.TemporalType"), } # constructor def __init__(self, package, modifiers, name, superInterfaces = [], annotations = [], innerClasses = [], properties = [], methods = []): RootFragment.__init__(self, packageName, modifiers, "enum", name, superInterfaces, annotations, innerClasses, properties, methods) ? I get 'CascadeType': Enum("javax.persistence.CascadeType"), NameError: name 'Enum' is not defined What's wrong with calling a constructor in a dict initializer? How do I solve this? Karsten
From: Thomas Jollans on 25 Jul 2010 11:53 On 07/25/2010 05:41 PM, Karsten Wutzke wrote: > What's wrong with: > > class Enum(RootFragment): > __jpaTypes = { > # complete! > 'CascadeType': Enum("javax.persistence.CascadeType"), > 'DiscriminatorType': > Enum("javax.persistence.DiscriminatorType"), > 'EnumType': Enum("javax.persistence.EnumType"), > 'FetchType': Enum("javax.persistence.FetchType"), > 'FlushModeType': Enum("javax.persistence.FlushModeType"), > 'GenerationType': Enum("javax.persistence.GenerationType"), > 'InheritanceType': Enum("javax.persistence.InheritanceType"), > 'LockModeType': Enum("javax.persistence.LockModeType"), > 'PersistenceContextType': > Enum("javax.persistence.PersistenceContextType"), > 'TemporalType': Enum("javax.persistence.TemporalType"), > } > > # constructor > def __init__(self, package, modifiers, name, superInterfaces = [], > annotations = [], innerClasses = [], properties = [], > methods = []): > RootFragment.__init__(self, packageName, modifiers, "enum", > name, superInterfaces, annotations, innerClasses, properties, methods) > > > ? > > I get > > 'CascadeType': Enum("javax.persistence.CascadeType"), > > NameError: name 'Enum' is not defined well, within the class statement, it's not defined. So you can't call Enum yet. You have to create your dict somewhere else. You can either set it from outside: class Enum(RootFragment): ... Enum._jpaTypes = { ... } Or, do exactly the same thing, but within a class method: class Enum(bla): @classmethod def contruct_jpatypes(cls): cls.__jpaTypes = { ... } Enum.construct_jpatypes() > > What's wrong with calling a constructor in a dict initializer? How do > I solve this? > > Karsten
From: Karsten Wutzke on 25 Jul 2010 12:30 > > You have to create your dict somewhere else. You can either set it from > outside: > > class Enum(RootFragment): > ... > > Enum._jpaTypes = { ... } > THANKS for the quick help. Karsten
|
Pages: 1 Prev: Compare two nested dictionaries Next: Python acting weird |