gpt4 book ai didi

Python 类成员类型提示

转载 作者:行者123 更新时间:2023-12-03 14:20:34 25 4
gpt4 key购买 nike

我正在使用 PyCharm开发一些 Python 应用程序。我正在尝试尽可能使用尖端的 Python,因此我正在使用新的 Python 功能。我有问题 type hinting .

大家看看我的DataAnalyzer类(class):

class DataAnalyzer:

def __init__(self, train_data: pd.DataFrame, test_data: pd.DataFrame) -> None:
self.train_data = train_data
self.test_data = test_data

def analyze(self):
pass

现在 PyCharm 用黄色灯泡向我发送垃圾邮件,希望我向 self.train_data 添加类型注释和 self.test_data .如果我单击此消息执行此操作,PyCharm 会在我的类(class)开头添加两行:
class DataAnalyzer:
train_data: pd.DataFrame
test_data: pd.DataFrame

def __init__(self, train_data: pd.DataFrame, test_data: pd.DataFrame) -> None:
self.train_data = train_data
self.test_data = test_data

def analyze(self):
pass

我想现在看起来更好了,但是 AFAIK 通过像这样编写这些变量,我使它们 静态 .

我想过这样注释类型:
class DataAnalyzer:

def __init__(self, train_data: pd.DataFrame, test_data: pd.DataFrame) -> None:
self.train_data: pd.DataFrame = train_data
self.test_data: pd.DataFrame = test_data

def analyze(self):
pass

这绝对不清楚,但是当我不想时,我不会让我的类(class)成员保持静态。

我知道,通过在方法签名中注释类型,在我分配这些类型时再做一次,这是一种矫枉过正,但我​​要求的是一般规则。我应该像 PyCharm 建议的那样注释那些类型,还是应该内联?

最佳答案

PyCharm 的建议是正确的。其实我觉得下面的代码更好:

class DataAnalyzer:
train_data: pd.DataFrame
test_data: pd.DataFrame

def __init__(self, train_data, test_data):
self.train_data = train_data
self.test_data = test_data

def analyze(self):
pass

解释:
  • 注释成员不会使其成为静态。
  • 我们不应该在 __init__ 中注释参数再次发挥作用。
  • -> None之后 __init__可以省略。对于 __init__从不返回值。

  • 谢谢。

    关于Python 类成员类型提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53897054/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com