首页 > 编程问答 >Python - 如何传递类对象的函数参数类型(打字)

Python - 如何传递类对象的函数参数类型(打字)

时间:2024-07-27 03:58:44浏览次数:11  
标签:python class python-3.7 python-typing

我想 python 3.7 附带了(不确定),不仅可以将变量名传递给函数,还可以传递变量的类型。我想知道的是是否有可能传递特定类的类型。

以同样的方式传递:

def foo_func(i: int) -> None:
    pass

如果我有一个类,让我们说:

class foo_class(object):
    pass

我如何转换 foo_func 接收 foo_class 而不是 int 类型?

此外,如果 foo_class 是另一个类的继承,我可以从父类强加一个更通用的类型吗?例如,如果我有,

class A(foo_class):
     pass

class B(foo_class):
     pass

我如何根据其父级传递 A B

我的意思是:

def foo_func(obj: foo_class_type) -> None:
    pass

foo_func(A())
foo_func(B())

当然,以下是使用 Python 类型提示将类作为参数传递到函数的方法:

class FooClass:
    pass

class A(FooClass):
    pass

class B(FooClass):
    pass

# 要将 FooClass 类型的对象作为参数传递,请执行以下操作:
def foo_func(obj: FooClass) -> None:
    pass

# 现在你可以传递 FooClass 的任何实例,包括 A 或 B
foo_func(FooClass())
foo_func(A())
foo_func(B())

在本例中,类型提示 obj: FooClass 指示 foo_func 预计会收到 FooClass 类型的对象。 由于 A B 都继承自 FooClass ,因此也可以作为参数传递。

还可以使用 typing 模块中的 Type 来指示希望函数接收一个类型本身,而不是该类型的实例。 例如:

from typing import Type

def create_instance(class_type: Type[FooClass]) -> FooClass:
    """创建并返回给定类的实例。"""
    return class_type()

my_a = create_instance(A)  # my_a 现在是 A 的实例

在本例中, create_instance 函数预计会收到一个与 FooClass 兼容的类型,并返回该类型的实例。

请记住,Python 中的类型提示仅仅是提示,并不会在运行时强制执行。 但是,它们对于文档目的以及与 MyPy 等静态分析工具一起使用以在运行代码之前捕获类型错误非常有用。

标签:python,class,python-3.7,python-typing
From: 55751368

相关文章

  • 使用 Python 构建简单 REST API
    使用Python构建简单RESTAPI1.概述本技术文档旨在指导开发者使用Python框架Flask构建一个基本的RESTAPI。通过学习本指南,您将掌握创建、读取、更新和删除(CRUD)操作的基本知识,并能够使用Python构建自己的API。2.安装依赖首先,您需要确保已安装Python和Flask......
  • Python——Pandas(第二讲)
    文章目录变量类型的转换Pandas支持的数据类型在不同数据类型间转换建立索引新建数据框时建立索引读入数据时建立索引指定某列为索引列将索引还原变量列引用和修改索引引用索引修改索引修改索引名修改索引值更新索引Series的索引和切片DataFrame的索引和切片选择列按......
  • 基于Python+Django的红色文化研学网站设计与实现
    ......
  • 【python】对网站进行请求-初识
    python实现对网站进行请求代码如下importrequestsdefget_data(url,headers=None,params=None,timeout=10):try:res=requests.get(url,headers=headers,params=params,timeout=timeout)res.raise_for_status()returnres.text......
  • 【python】Django初识-从未有如此美妙的开局
    Django初识python、Django安装与验证python安装Python官网https://www.python.org/Django安装pipinstallDjango验证python是否安装成功python--version验证Django是否安装成功python3-mdjango--version创建第一个Django项目项目创建与服务器启动打开cmd,输......
  • Python虚拟环境创建、激活、使用,项目依赖导出、安装requestments.txt
    Python虚拟环境通过命令行终端创建python虚拟环境:新建一个文件夹,可以专门用来存放虚拟环境,这里在D盘创建Python_Virtual_Environment_test文件夹然后在这里输入cmd按回车键进入命令行终端此时打开的位置就是当前的路径,当然也可以 cd一步步进入到目标路径创建环境......
  • 使用 Python 脚本自动生成报告
    使用Python脚本自动生成报告1.简介本文档介绍如何使用Python脚本自动生成报告。此脚本旨在简化报告生成过程,提高效率并减少人为错误。2.需求Python3.6或更高版本Pandas库Matplotlib库3.安装使用pip安装必要的库:pipinstallpandasmatplotlib4.脚本im......
  • 【和为 K 的子数组】python刷题记录
    这就到前缀和了。classSolution:defsubarraySum(self,nums:List[int],k:int)->int:#连续不能sortnum=len(nums)i=0j=i+1sm=0ret=0#j可以=是因为后面切片不包括jwhilej<=num:......
  • 嵌入式Python、ROS、SLAM、WebSocket和Node.js:智能巡逻监控安防机器人设计流程(代码示
    项目概述随着智能技术的发展,智能巡逻机器人在安防、监控和巡逻等领域的应用越来越广泛。本文将介绍一个结合嵌入式系统、机器人技术和后端开发的智能巡逻机器人。该机器人能够自主导航,实时检测异常情况(如火灾或入侵者),并将数据发送到后端服务器,以实现高效的监控和应急响应。主......
  • python和mysql数据库
    pyhton和mysql数据库1.非查询:frompymysqlimportConnection#导入数据库模块pymysql以及Connection对象conn=Connection(#连接数据库  host='127.0.0.1',#ip地址或者是主机名  port=3306,#端口号  user='root',  password='20040130', ) cursor=c......