Intuitively this seems impossible, but here goes.
I am importing a class from a python module, where it has a static method that returns a new instance of the class and does some stuff to that instance, let's just call this method make_instance
. I am trying to create a custom class with some overridden functionality that inherits from this class. Here comes the problem, there seems to be no way of overriding the make_instance
in a way so that it returns my subclass instead of the super class.
Here's a minimal example:
# Note that I cannot edit this class, nor see the contents of this class, as it is from a python module
class SuperClass:
@staticmethod
def make_instance(number) -> SuperClass:
obj = SuperClass()
obj.number = number * 2
return obj
class SubClass(SuperClass):
@staticmethod
def make_instance(number) -> SubClass:
return super().make_instance(number) # Returns a SuperClass object
# Additional functionality of the subclass
Is there potentially any way of achieving this? If not is there any other suggestions that could help with this kind of situation? Thanks.