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 = name
You 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.name
straight 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
MagicMixin
by inheriting from it.See examples: Magic mixins