DL Neil wrote:
Is there a technique or pattern for taking a (partially-) populated instance of a class, and re-creating it as an instance of one of its sub-classes?

Often you can assign to the __class__ attribute of an instance
to change its class.

Python 3.7.3 (default, Apr  8 2019, 22:20:19)
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> class Person:
...  pass
...
>>> class Male(Person):
...  pass
...
>>> p = Person()
>>> p.__class__ = Male
>>> isinstance(p, Male)
True
>>>

You would then be responsible for initialising any attributes of
Male that Person didn't have.

--
Greg
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to