我正在使用Python 2.7并编写文档字符串,使用Sphinx表示法指定字段和参数的类型。在我的项目的以下代码中,Pycharm引发了两个类型提示错误(下面的说明):
from struct import Struct
import urllib
class OStruct(Struct):
""" Abstract data structure for containing data to be transmitted over the network. """
__metaclass__ = ABCMeta
def __init__(self):
Struct.__init__(self, self.format)
class ConnectionIDStruct(OStruct):
""" Sent from server to client via TCP on connect
Sent from client to server via UDP to map UDP port to TCP connection object
Direction: 2 way
"""
type = 0x00
format = '<B2Q'
def __init__(self, upper, lower):
"""
:type upper: int
:type lower: int
"""
OStruct.__init__(self)
self.upper = upper
self.lower = lower
def pack(self):
""" Pack the data.
:rtype: str
"""
return OStruct.pack(self, self.type, self.upper, self.lower)
OStruct是一个抽象类,它继承了标准库类struct.Struct。 ConnectionIDStruct是将子类化OStruct的许多类之一。在上面的代码中,产生了两个与类型提示有关的警告,并且都预期&#39; Struct&#39;作为班级:
预期类型&#39;结构&#39;,得到&#39; OStruct&#39;代替
on&#39; self&#39;在这一行:
Struct.__init__(self, self.format)
和
预期类型&#39;结构&#39;,得到&#39; ConnectionIDStruct&#39;代替
on&#39; self&#39;在这一行:
return OStruct.pack(self, self.type, self.upper, self.lower)
使用Sphinx表示法的文档字符串似乎适用于所有其他情况。
如何防止Pycharm引发这些警告,以便每当我将具体的OStruct子类传递给Struct方法时都不会发出警告?