Pankoff’s magic
- pankoff.magic.autoinit(klass, verbose=False)
Auto generates
__init__method for your class based on its validators.- Parameters
merge (bool) – in case you have existing
__init__in your class, you can merge themklass (type) – Class to decorate
verbose (bool) – In case its
True, it’ll print out the generated source for__init__method, defaults toFalse
- Returns
Same class but with newly created
__init__- Raises
RuntimeError – raised in case class already has
__init__defined
@autoinit(verbose=True) class Person: name = String()
Prints:
Generated __init__ method for <class '__main__.Person'> def __init__(self, name): self.name = nameYou can merge existing
__init__with generated one by usingmerge=True, e.g:@autoinit(verbose=True, merge=True) class Person: name = String() def __init__(self, surname): self.full_name = self.name + " " + surname
Which prints:
Generated __init__ method for <class '__main__.Person'> def __init__(self, name, *args, **kwargs): self.name = name user_defined_init(self, *args, **kwargs)As you can see, you can use
self.namestraight away.person = Person(name="Yaroslav", surname=Pankovych) print(person.full_name) # Yaroslav Pankovych
- class pankoff.magic.Alias(source)
Create and alias for your fields.
- Parameters
source (str) – Attribute name to reffer to
>>> class Person: ... full_person_name = String() ... name = Alias("full_person_name")
>>> obj = Person("Yaroslav Pankovych") >>> obj.name "Yaroslav Pankovych"
- class pankoff.magic.MagicMixin
Create
MagicMixinby inheriting from it.See examples: Magic mixins