renumbering chapters >= 19
This commit is contained in:
22
24-class-metaprog/autoconst/autoconst.py
Normal file
22
24-class-metaprog/autoconst/autoconst.py
Normal file
@@ -0,0 +1,22 @@
|
||||
# tag::WilyDict[]
|
||||
class WilyDict(dict):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
self.__next_value = 0
|
||||
|
||||
def __missing__(self, key):
|
||||
if key.startswith('__') and key.endswith('__'):
|
||||
raise KeyError(key)
|
||||
self[key] = value = self.__next_value
|
||||
self.__next_value += 1
|
||||
return value
|
||||
# end::WilyDict[]
|
||||
|
||||
# tag::AUTOCONST[]
|
||||
class AutoConstMeta(type):
|
||||
def __prepare__(name, bases, **kwargs):
|
||||
return WilyDict()
|
||||
|
||||
class AutoConst(metaclass=AutoConstMeta):
|
||||
pass
|
||||
# end::AUTOCONST[]
|
||||
Reference in New Issue
Block a user