Merge class dict with parent dict when creating meta attributes
In some situations, where the Base class defines an Attribute, the BaseMeta class doesn't properly see the _get_parent_attribute or _get_attr_<whatever> methods because of multiple layers of subclasses (ie. Handler, which subclasses Task). This addresses that by merging the __dict__ of the parent with the current classes __dict__ meaning all future iterations see available special methods. Fixes #18378
This commit is contained in:
parent
912d6ed8cc
commit
4794b5da45
1 changed files with 3 additions and 1 deletions
|
@ -131,7 +131,9 @@ class BaseMeta(type):
|
||||||
for parent in parents:
|
for parent in parents:
|
||||||
if hasattr(parent, '__dict__'):
|
if hasattr(parent, '__dict__'):
|
||||||
_create_attrs(parent.__dict__, dst_dict)
|
_create_attrs(parent.__dict__, dst_dict)
|
||||||
_process_parents(parent.__bases__, dst_dict)
|
new_dst_dict = parent.__dict__.copy()
|
||||||
|
new_dst_dict.update(dst_dict)
|
||||||
|
_process_parents(parent.__bases__, new_dst_dict)
|
||||||
|
|
||||||
# create some additional class attributes
|
# create some additional class attributes
|
||||||
dct['_attributes'] = dict()
|
dct['_attributes'] = dict()
|
||||||
|
|
Loading…
Reference in a new issue