【问题标题】:How can I explicitly specify a class type for a Python variable?如何为 Python 变量显式指定类类型?
【发布时间】:2021-08-28 04:46:58
【问题描述】:

我是 Python 的新手,来自 Java 背景。我有这样的事情:

class A:
    def __init__(self):
        self.var1 = 1
        self.var2 = 2

class B:
    def __init__(self):
        self.my_list = []

    def add(self, a_object):
        self.my_list.append(a_object)

    def show(self):
        for a_object in self.my_list:
            print(a_object.var1, a_object.var2)

现在,我知道这段代码会运行,但我的问题是是否有任何方法可以在 show 方法中指定 a_object 变量实际上是 A 类型的对象(如类型转换 - 我会像(A)a_object一样用java写)。我首先希望这是为了代码的更好的可读性以及自动完成。我猜另一种解决方案是键入列表,如果可能的话,我也很感兴趣。

谢谢。

【问题讨论】:

  • 你可以输入类型提示:def add(self, a_object: A): 这不是由解释器强制执行的(当然:Python 不像 Java 那样强类型),但 IDE 可以理解。

标签: python python-3.x list python-2.x python-typing


【解决方案1】:

您可以使用类型提示。但是请注意,这不是强制执行的,而是引导您和 IDE 了解您是否传递了正确的参数。

如果你对静态类型感兴趣,也可以查看mypy

from typing import List


class A:
    def __init__(self):
        self.var1 = 1
        self.var2 = 2

class B:
    def __init__(self):
        self.my_list: List[A] = []

    def add(self, a_object: A):
        self.my_list.append(a_object)

    def show(self):
        for a_object in self.my_list:
            print(a_object.var1, a_object.var2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-29
    • 2019-08-27
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 2020-01-13
    相关资源
    最近更新 更多