[英]Python static method return subclass instead of superclass
直覺上這似乎是不可能的,但是可以。
我正在從 python 模塊導入一個 class,它有一個 static 方法,該方法返回 class 的一個新實例並對那個實例做一些事情,讓我們調用這個方法make_instance
。 我正在嘗試創建一個自定義 class,它具有一些繼承自此 class 的覆蓋功能。問題來了,似乎無法以某種方式覆蓋make_instance
,以便它返回我的子類而不是超級 class。
這是一個最小的例子:
# 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
有沒有可能實現這一目標的方法? 如果沒有,還有其他建議可以幫助解決這種情況嗎? 謝謝。
由於似乎沒有辦法實現這一點,我求助於使用 fishhook 模塊為所有需要繼承的方法創建方法掛鈎,而不是繼承然后嘗試覆蓋有問題的 static 方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.