Pytorch基础:内置类type的用法

相关阅读

Pythonicon-default.png?t=N7T8https://blog.csdn.net/weixin_45791458/category_12403403.html?spm=1001.2014.3001.5482


        在python中,一切数据类型都是对象(即类的实例),包括整数、浮点数、字符串、列表、元组、集合、字典、复数、布尔、函数、自定义类等,它们都是根据相应的类创建的。

        python内建类的定义可以在库文件/stdlib/builtins.pyi中找到,下面的例1示例性地给出了整数类型的定义。

# 例1
class int:@overloaddef __new__(cls, x: ConvertibleToInt = ..., /) -> Self: ...@overloaddef __new__(cls, x: str | bytes | bytearray, /, base: SupportsIndex) -> Self: ...def as_integer_ratio(self) -> tuple[int, Literal[1]]: ...@propertydef real(self) -> int: ...@propertydef imag(self) -> Literal[0]: ...@propertydef numerator(self) -> int: ...@propertydef denominator(self) -> Literal[1]: ...def conjugate(self) -> int: ...def bit_length(self) -> int: ...if sys.version_info >= (3, 10):def bit_count(self) -> int: ...if sys.version_info >= (3, 11):def to_bytes(self, length: SupportsIndex = 1, byteorder: Literal["little", "big"] = "big", *, signed: bool = False) -> bytes: ...@classmethoddef from_bytes(cls,bytes: Iterable[SupportsIndex] | SupportsBytes | ReadableBuffer,byteorder: Literal["little", "big"] = "big",*,signed: bool = False,) -> Self: ...else:def to_bytes(self, length: SupportsIndex, byteorder: Literal["little", "big"], *, signed: bool = False) -> bytes: ...@classmethoddef from_bytes(cls,bytes: Iterable[SupportsIndex] | SupportsBytes | ReadableBuffer,byteorder: Literal["little", "big"],*,signed: bool = False,) -> Self: ...if sys.version_info >= (3, 12):def is_integer(self) -> Literal[True]: ...def __add__(self, value: int, /) -> int: ...def __sub__(self, value: int, /) -> int: ...def __mul__(self, value: int, /) -> int: ...def __floordiv__(self, value: int, /) -> int: ...def __truediv__(self, value: int, /) -> float: ...def __mod__(self, value: int, /) -> int: ...def __divmod__(self, value: int, /) -> tuple[int, int]: ...def __radd__(self, value: int, /) -> int: ...def __rsub__(self, value: int, /) -> int: ...def __rmul__(self, value: int, /) -> int: ...def __rfloordiv__(self, value: int, /) -> int: ...def __rtruediv__(self, value: int, /) -> float: ...def __rmod__(self, value: int, /) -> int: ...def __rdivmod__(self, value: int, /) -> tuple[int, int]: ...@overloaddef __pow__(self, x: Literal[0], /) -> Literal[1]: ...@overloaddef __pow__(self, value: Literal[0], mod: None, /) -> Literal[1]: ...@overloaddef __pow__(self, value: _PositiveInteger, mod: None = None, /) -> int: ...@overloaddef __pow__(self, value: _NegativeInteger, mod: None = None, /) -> float: ...# positive __value -> int; negative __value -> float# return type must be Any as `int | float` causes too many false-positive errors@overloaddef __pow__(self, value: int, mod: None = None, /) -> Any: ...@overloaddef __pow__(self, value: int, mod: int, /) -> int: ...def __rpow__(self, value: int, mod: int | None = None, /) -> Any: ...def __and__(self, value: int, /) -> int: ...def __or__(self, value: int, /) -> int: ...def __xor__(self, value: int, /) -> int: ...def __lshift__(self, value: int, /) -> int: ...def __rshift__(self, value: int, /) -> int: ...def __rand__(self, value: int, /) -> int: ...def __ror__(self, value: int, /) -> int: ...def __rxor__(self, value: int, /) -> int: ...def __rlshift__(self, value: int, /) -> int: ...def __rrshift__(self, value: int, /) -> int: ...def __neg__(self) -> int: ...def __pos__(self) -> int: ...def __invert__(self) -> int: ...def __trunc__(self) -> int: ...def __ceil__(self) -> int: ...def __floor__(self) -> int: ...def __round__(self, ndigits: SupportsIndex = ..., /) -> int: ...def __getnewargs__(self) -> tuple[int]: ...def __eq__(self, value: object, /) -> bool: ...def __ne__(self, value: object, /) -> bool: ...def __lt__(self, value: int, /) -> bool: ...def __le__(self, value: int, /) -> bool: ...def __gt__(self, value: int, /) -> bool: ...def __ge__(self, value: int, /) -> bool: ...def __float__(self) -> float: ...def __int__(self) -> int: ...def __abs__(self) -> int: ...def __hash__(self) -> int: ...def __bool__(self) -> bool: ...def __index__(self) -> int: ...

        如果一个类没有指定父类,则其默认继承object类,它是python中所有类的基类,如例2所示,注意在最后使用了issubclass函数进行了检验。

# 例2
class object:__doc__: str | None__dict__: dict[str, Any]__module__: str__annotations__: dict[str, Any]@propertydef __class__(self) -> type[Self]: ... # 注意这个属性@__class__.setterdef __class__(self, type: type[object], /) -> None: ... def __init__(self) -> None: ...def __new__(cls) -> Self: ...# N.B. `object.__setattr__` and `object.__delattr__` are heavily special-cased by type checkers.# Overriding them in subclasses has different semantics, even if the override has an identical signature.def __setattr__(self, name: str, value: Any, /) -> None: ...def __delattr__(self, name: str, /) -> None: ...def __eq__(self, value: object, /) -> bool: ...def __ne__(self, value: object, /) -> bool: ...def __str__(self) -> str: ...  # noqa: Y029def __repr__(self) -> str: ...  # noqa: Y029def __hash__(self) -> int: ...def __format__(self, format_spec: str, /) -> str: ...def __getattribute__(self, name: str, /) -> Any: ...def __sizeof__(self) -> int: ...# return type of pickle methods is rather hard to express in the current type system# see #6661 and https://docs.python.org/3/library/pickle.html#object.__reduce__def __reduce__(self) -> str | tuple[Any, ...]: ...def __reduce_ex__(self, protocol: SupportsIndex, /) -> str | tuple[Any, ...]: ...if sys.version_info >= (3, 11):def __getstate__(self) -> object: ...def __dir__(self) -> Iterable[str]: ...def __init_subclass__(cls) -> None: ...@classmethoddef __subclasshook__(cls, subclass: type, /) -> bool: ...print(issubclass(int, object)) # 注意使用类名int而不是int()# 输出
True

        type是一个python内置类,例3是它的定义,如所有其他类一样,它也继承了object类。

# 例3
class type:# object.__base__ is None. Otherwise, it would be a type.@propertydef __base__(self) -> type | None: ...__bases__: tuple[type, ...]@propertydef __basicsize__(self) -> int: ...@propertydef __dict__(self) -> types.MappingProxyType[str, Any]: ...  # type: ignore[override]@propertydef __dictoffset__(self) -> int: ...@propertydef __flags__(self) -> int: ...@propertydef __itemsize__(self) -> int: ...__module__: str@propertydef __mro__(self) -> tuple[type, ...]: ...__name__: str__qualname__: str@propertydef __text_signature__(self) -> str | None: ...@propertydef __weakrefoffset__(self) -> int: ...@overloaddef __init__(self, o: object, /) -> None: ...@overloaddef __init__(self, name: str, bases: tuple[type, ...], dict: dict[str, Any], /, **kwds: Any) -> None: ...@overloaddef __new__(cls, o: object, /) -> type: ...@overloaddef __new__(cls: type[_typeshed.Self], name: str, bases: tuple[type, ...], namespace: dict[str, Any], /, **kwds: Any) -> _typeshed.Self: ...def __call__(self, *args: Any, **kwds: Any) -> Any: ...def __subclasses__(self: _typeshed.Self) -> list[_typeshed.Self]: ...# Note: the documentation doesn't specify what the return type is, the standard# implementation seems to be returning a list.def mro(self) -> list[type]: ...def __instancecheck__(self, instance: Any, /) -> bool: ...def __subclasscheck__(self, subclass: type, /) -> bool: ...@classmethoddef __prepare__(metacls, name: str, bases: tuple[type, ...], /, **kwds: Any) -> MutableMapping[str, object]: ...if sys.version_info >= (3, 10):def __or__(self, value: Any, /) -> types.UnionType: ...def __ror__(self, value: Any, /) -> types.UnionType: ...if sys.version_info >= (3, 12):__type_params__: tuple[TypeVar | ParamSpec | TypeVarTuple, ...]print(issubclass(type, object)) # 注意使用类名type而不是type()# 输出
True

        type()类可以返回一个对象(即类的实例)的类,它实际上是返回一个对象(即类的实例)的__class__属性,而__class__属性在例化一个类时会自动设置,下面的例4说明了这一点。

# 例4
a=1
b=1.0
c="1"
d=[1,2,3]
e=(1,2,3)
f={1,2,3}
g={"a":1,"b":2}
h=1+2j
i=True
def j():pass
class k:pass
kk=k()print(type(a), a.__class__, issubclass(type(a), object))
print(type(b), b.__class__, issubclass(type(b), object))
print(type(c), c.__class__, issubclass(type(c), object))
print(type(d), d.__class__, issubclass(type(d), object))
print(type(e), e.__class__, issubclass(type(e), object))
print(type(f), f.__class__, issubclass(type(f), object))
print(type(g), g.__class__, issubclass(type(g), object))
print(type(h), h.__class__, issubclass(type(h), object))
print(type(i), i.__class__, issubclass(type(i), object))
print(type(j), j.__class__, issubclass(type(j), object))
print(type(kk), kk.__class__, issubclass(type(kk), object))# 输出
<class 'int'> <class 'int'> True
<class 'float'> <class 'float'> True
<class 'str'> <class 'str'> True    
<class 'list'> <class 'list'> True  
<class 'tuple'> <class 'tuple'> True
<class 'set'> <class 'set'> True
<class 'dict'> <class 'dict'> True
<class 'complex'> <class 'complex'> True
<class 'bool'> <class 'bool'> True
<class 'function'> <class 'function'> True
<class '__main__.k'> <class '__main__.k'> True

        注意到在type类针对实例kk使用时,实际上返回了其类名k,因此甚至可以使用返回值再次实例化一个对象,如下例5所示。

# 例5
class k:pass
kk=k()
kkk=type(kk)()   # type(kk)相当于k

        如果对类名再次使用type,返回的会是type类,因为所有的类都是type这个元类的实例,如下例6所示。

# 例6
class k:pass
kk=k()
print(type(type(kk)))
print(isinstance(type(kk), type)) # 检测自定义类是否是type类或其父类的实例# 输出
<class 'type'>
True

        总结来说就是,object类直接或间接是所有类的父类(可以用issubclass函数检测),而所有类又都是type类的实例(可以用isinstance函数检测)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/832408.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT的真实能力如何?七大NLP任务一探究竟!

文章链接&#xff1a;https://arxiv.org/pdf/2405.00704 ChatGPT已经改变了人工智能社区&#xff0c;一个活跃的研究方向是ChatGPT的性能评估。评估的一个关键挑战是ChatGPT仍然是闭源的&#xff0c;传统的基准数据集可能已被ChatGPT用作训练数据。在本文中: 调查了最近的研究…

MySQL-基础篇

MySQL基础篇 MySQL概述 MySQL安装与启动 配置MySQL环境变量 MySQL数据库 SQL DDL 数据库操作 表操作 表操作-修改 注意&#xff1a;在删除表时&#xff0c;表中的全部数据也会被删除。 datagrip DML DQL DQL-基本查询 在实际开发过程中&#xff0c;尽量不要写se…

利用matplotlib和networkx绘制有向图[显示边的权重]

使用Python中的matplotlib和networkx库来绘制一个有向图&#xff0c;并显示边的权重标签。 1. 定义了节点和边&#xff1a;节点是一个包含5个节点的列表&#xff0c;边是一个包含各个边以及它们的权重的列表。 2. 创建了一个有向图对象 G。 3. 向图中添加节点和边。 4. 设置了…

vue3中标签的ref属性

组合API-ref属性 在vue2.x中&#xff0c;可以通过给元素添加refxxx属性&#xff0c;然后在代码中通过this.$refs.xxx获取到对应的元素 然而在vue3中时没有$refs这个东西的&#xff0c;因此vue3中通过ref属性获取元素就不能按照vue2的方式来获取。 目标&#xff1a;掌握使用re…

ModuleNotFoundError: No module named ‘pkg_resources‘ 问题如何解决?

ModuleNotFoundError: No module named pkg_resources 通常是因为 Python 环境中缺少 setuptools 模块。pkg_resources 是 setuptools 包的一部分&#xff0c;用于处理 Python 包的发行和资源。 为解决这个问题&#xff0c;请按照以下步骤操作&#xff1a; 确保 setuptools 已…

压缩png图片大小怎么操作?试试这招一键压缩图片体积

png图片是一种无损压缩格式&#xff0c;体积也会比其他格式的图片要大。但是&#xff0c;我们在使用的过程中遇到需要给png图片压缩体积的情况时要怎么办呢&#xff1f;很简单&#xff0c;只需要使用png压缩大小&#xff08;https://www.yasuotu.com/png&#xff09;网站-压缩图…

UE5 体积云

写好的体积材质放这里面 效果如上 Begin Object Class/Script/UnrealEd.MaterialGraphNode Name"MaterialGraphNode_4"Begin Object Class/Script/Engine.MaterialExpressionVectorParameter Name"MaterialExpressionVectorParameter_0"End ObjectBegin O…

欢乐钓鱼大师脚本,游戏托管一键操作!

欢迎来到《钓鱼大师乐趣无穷》&#xff01;这里是一片充满了乐趣和挑战的钓鱼天地。不论你是刚刚入门的小白&#xff0c;还是已经成为老手的大神&#xff0c;本攻略将为你揭示如何在游戏中获得成功&#xff0c;并针对稀有鱼类的钓鱼技巧进行详细介绍。 一、初探钓鱼的乐趣 在《…

低功耗UPF设计的经典案列分享

案例1 分享个例子&#xff0c;景芯A72低功耗设计&#xff0c;DBG domain的isolation为何用VDDS_maia_noncpu供电而不是TOP的VDD&#xff1f; 答&#xff1a;因为dbg的上一级是noncpu&#xff0c;noncpu下面分成dbg和两个tbnk。 案例2 景芯A72的低功耗&#xff0c;请问&#…

RabbitMQ是怎么做消息分发的?——Java全栈知识(14)

RabbitMQ是怎么做消息分发的&#xff1f; RabbitMQ 的消息分发分为五种模式&#xff1a;分别是简单模式、工作队列模式、发布订阅模式、路由模式、主题模式。 1、简单模式 publisher 直接发送消息到队列消费者监听并处理队列中的消息 简单模式是最基本的工作模式&#xff0c;…

数据仓库基础理论(学习笔记)

数据仓库基础理论 1.数据仓库概念 2.数据仓库为何而来 3.数据仓库主要特征 4.OLTP、OLAP系统 5.数据仓库与数据库的区别 6.数据仓库与数据集市的区别 7.数据仓库分层架构 7.1为什么要分层&#xff1f; 8.ETL、ELT

爱普生S2D13V52快速实现车载显示屏高分辨率显示系统

随着时代的发展&#xff0c;汽车驾驶位前中央的显示屏承担的功能也越来越多&#xff0c;从一开始仅仅是显示仪表盘的信息&#xff0c;再到作为显示屏辅助倒车&#xff0c;再到如今和一块平板一样可公认娱乐&#xff0c;显示屏的大小有些时候成为了一辆车够不够好的体现。随着汽…

【网络安全】记一场完整实战SRC漏洞挖掘(超详细)全过程

前言 记录一次完整的某SRC漏洞挖掘实战&#xff0c;为期一个多星期。文章有点长&#xff0c;请耐心看完&#xff0c;记录了完整的SRC漏洞挖掘实战 渗透过程 因为选择的幸运儿没有对测试范围进行规划&#xff0c;所以此次范围就是没有范围。 先上主域名看一眼&#xff0c;看…

Error: error:0308010C:digital envelope routines::unsupported 问题如何解决

Error: error:0308010C:digital envelope routines::unsupported 通常与 Node.js 的加密库中对某些加密算法的支持有关。这个错误可能是因为 Node.js 的版本与某些依赖库不兼容导致的。特别是在 Node.js 17 版本中&#xff0c;默认使用 OpenSSL 3&#xff0c;而一些旧的加密方式…

银行卡实名认证API接口快速对接

银行卡实名认证API接口又叫银行卡核验类API接口、银行卡验证类API接口、银联核验类API接口,根据入参字段不同&#xff0c;分银行卡二要素验证API接口&#xff0c;银行卡三要素验证API接口&#xff0c;银行卡四要素验证API接口。其中&#xff0c;银行卡二要素验证API接口是验证开…

BEV下统一的多传感器融合框架 - FUTR3D

BEV下统一的多传感器融合框架 - FUTR3D 引言 在自动驾驶汽车或者移动机器人上&#xff0c;通常会配备许多种传感器&#xff0c;比如&#xff1a;光学相机、激光雷达、毫米波雷达等。由于不同传感器的数据形式不同&#xff0c;如RGB图像&#xff0c;点云等&#xff0c;不同模态…

TypeError报错处理

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 一、Python中的TypeError简介 这个错误通常表示在方法调用时&#xff0c;参数类型不正确&#xff0c;或者在对字符串进行格式化操作时&#xff0c;提供的变量与预期不符。 二、错误的源头&#xff1a;字符串格式化…

动力电池热管理方案介绍与发展方向

摘要 随着电动汽车的快速发展&#xff0c;高性能的动力电池系统成为推动电动汽车产业发展的重要因素。然而&#xff0c;伴随着能量密度提高和放电深度增加&#xff0c;电池热管理问题逐渐凸显。良好的热管理方案能够提高电池的寿命&#xff0c;保障电池性能&#xff0c;延长电…

【C语言刷题系列】移除元素

目录 一、问题描述 二、解题思路 三、源代码 个人主页&#xff1a; 倔强的石头的博客 系列专栏 &#xff1a;C语言指南 C语言刷题系列 一、问题描述 二、解题思路 在C语言中&#xff0c;原地移除数组中所有等于特定值的元素并返回新长度的问题可以通过双指针法…

Linux:进程信号(一)信号的产生

目录 一、信号是什么&#xff1f; 二、Linux信号 三、信号处理方式 四、信号的产生 1、 通过终端按键产生信号 2、调用系统函数向进程发信号 3、 硬件异常产生信号 一、信号是什么&#xff1f; 在生活中&#xff0c;有许多信号&#xff0c;比如红绿灯&#xff0c;下课铃声…