如何为返回socket.socket与socket._RetAddress的静态方法添加类型注解?
为静态方法添加返回值类型注解的实现方案
你可以通过以下两种方式为该静态方法添加返回值类型注解,让智能感知正确识别返回类型:
方式一:使用原生元组类型标注(Python 3.9+)
直接利用Python 3.9及以上版本支持的原生元组类型注解,明确指定返回的两个元素类型:
import socket import os import chalk class YourClassName: @staticmethod def init_socket(_addr: str, _port: int) -> tuple[socket.socket, socket._RetAddress]: s = socket.socket() s.bind((_addr, _port)) s.listen() print(chalk.red("WAITING FOR CONNECTIONS...")) c, addr = s.accept() os.system("cls") return (c, addr)
方式二:使用typing.Tuple(兼容Python 3.8及更早版本)
如果项目需要兼容Python 3.8或更早版本,可导入typing.Tuple进行标注:
import socket import os import chalk from typing import Tuple class YourClassName: @staticmethod def init_socket(_addr: str, _port: int) -> Tuple[socket.socket, socket._RetAddress]: s = socket.socket() s.bind((_addr, _port)) s.listen() print(chalk.red("WAITING FOR CONNECTIONS...")) c, addr = s.accept() os.system("cls") return (c, addr)
注意事项
- 必须确保已导入
socket模块,否则类型注解无法被智能感知识别。 socket._RetAddress是socket.accept()返回的地址对象对应的内部类型,不同平台下可能存在细微差异,但主流IDE的智能感知均可正确识别该类型。
内容的提问来源于stack exchange,提问作者Abhimanyu Sharma
相关产品推荐
相关产品推荐

