Assign Field Value

Field value can be assigned by adding field arg to assign() method. By default field values are key values with _ prepended. If key="speed" then field defaults to _speed and thus attribute with the name of _speed is a assigned to class instance. Setting field arg overrides attribute name that is assigned to current class instance.

from kwhelp import KwargsHelper
import kwhelp.rules as rules

class MyClass:
    def __init__(self, **kwargs):
        kw = KwargsHelper(self, {**kwargs})
        kw.assign(key="speed", field="race_speed", require=True,
            rules_all=[rules.RuleIntPositive])
        kw.assign(key="unit", field="unit", default="MPH",
            rules_all=[rules.RuleStrNotNullOrEmpty])
>>> myclass = MyClass(speed=123)
>>> print(myclass.race_speed)
123
>>> print(myclass.unit)
MPH
>>> myclass = MyClass(speed=123, unit="KPH")
>>> print(myclass._speed)
123
>>> print(myclass._unit)
KPH

Note

Default prefix for all field can be set by setting field_prefix arg of KwargsHelper constructor.