簡體   English   中英

如何明確指定變量是特定類的實例?

[英]How do I explicitly specify that a variable is an instance of a particular class?

共有三類(A、B、C)。 A 類是 master,處理 B 類和 C 類的一些數據。 B 類處理 C 類的數據,C 類的實例通過 A 傳遞給 B。

示例代碼如下 ()

一個.py

from b import SomeB
from c import SomeC

class SomeA(object):
    def __init__(self):
        self.object_c = SomeC()
        self.object_b = SomeB(self.object_c)

        self.some_work_with_obj_c_data()
        self.some_work_with_obj_b_data()

    def some_work_with_obj_c_data(self):
        self.object_c.some_var_for_a += 1
        print(self.object_c.some_var_for_a)

    def some_work_with_obj_b_data(self):
        self.object_b.some_var_for_a += 1
        print(self.object_b.some_var_for_a)


if __name__ == "__main__":
    object_a = SomeA()

b.py

class SomeB(object):
    def __init__(self, object_c_from_a):
        self.some_var_for_a = 5678
        self.object_c_from_a = object_c_from_a  # an instance of the SomeC class from C.py
        self.some_work_with_obj_c_data()

    def some_work_with_obj_c_data(self):
        self.object_c_from_a.some_var_for_b += 1
        print(self.object_c_from_a.some_var_for_b)

py

class SomeC(object):
    def __init__(self):
        self.some_var_for_b = 1234
        self.some_var_for_a = 4321

在實際情況下,它是兩個 GUI 窗口(A 和 B),以及一些數據處理程序 (C)。

本質上,B 類沒有明確指定我們正在處理的數據類型(特別是如果您沒有用注釋指定)。 IDE 中也沒有自動完成代碼(例如 PyCharm)。

是否有一種機制可以指定變量是對特定類的實例的引用? 或者有一個更全局的架構問題,它原則上不應該存在?

在 python 中,你沒有靜態類型,這正是你想要的。 相反,變量是動態類型的。

您的問題的關鍵解決方案是給變量命名。 例如,如果變量名為 amount_of_songs,您可以推斷它是一個數字。 其他類型也一樣。

python中使用的主要方法稱為duck typing

鴨子類型是一個與動態類型相關的概念,其中對象的類型或類不如它定義的方法重要。 當您使用鴨子類型時,您根本不檢查類型。 相反,您檢查給定方法或屬性的存在。

編輯:也許我錯過了這個問題:您只想向函數添加類型提示嗎? 那么這將是輸入 python

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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