簡體   English   中英

Python static 方法返回子類而不是超類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM