Python:定义类型或命名元组时使用name参数的原因

罗伯特

我对Python还是很陌生,所以这可能是一个愚蠢的问题,但是我不了解type()and的第一个参数的用途namedtuple()

tuple_typename = namedtuple( 'tuple_typename', 'member1 member2 member3' )

custom_typename = type( 'custom_typename', (base_type,), members_dictionary )

我不明白返回值和字符串参数之间的区别吗?如果返回值是类型引用,为什么我们需要将其指定为参数?或者,如果需要将其指定为字符串参数,为什么还要捕获返回值?

和另一个相关的问题:如果输入字符串是类型名称规范,是否有任何方法可以控制将类型名称添加到的名称空间?例如,是否可以从该类之外的现有类中添加子类?

编辑:即使我接受了一个很好的答案,我想知道是否有人可以清除另一件事。一旦定义了命名元组或自定义类型,何时和/或在哪里使用第一个字符串参数?以后如何使用为该参数指定的名称来引用类型名称?那可能吗?还是一旦函数返回值超出范围,类型引用就会丢失吗?更新:查看已接受答案的评论

切普纳

“名称”是Python中的重载术语。当有人提到“类型名称”时,它可能是两件事之一:

  1. “固有”名称,它是类型本身定义的一部分,可通过其__name__属性访问

  2. 引用类型的变量的名称可以有多个引用同一类型的变量,并且这些类型本身都不能访问这些名称。

例如:

>>> class A:
...     pass
...
>>> x = A
>>> del A
>>> y = x
>>> A
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'A' is not defined
>>> x.__name__
'A'
>>> y.__name__
'A'

class语句设置了两种类型的名称:class关键字后面的标识符既用于设置类型的固有名称(通过将其用作调用的第一个参数type,也用于创建引用该类型的新变量。可以像使用其他变量一样设置该变量,del但是只要其他名称仍然引用该类型,就不会丢失该变量您可以通过对type的两个现有引用之一来查看固有名称A

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用元组时,“int”类型的参数不可迭代

当期望使用元组类型参数时,是否可以始终将列表类型用作函数参数?

如何使用python类型指定这种可变参数元组?

如何从参数包定义值类型的元组

错误:使用ListView时未定义命名参数'children'

Python:扩展预定义的命名元组

使用C#“命名参数”的实际原因

Python:类型注释,如何定义元组的元素?

未定义的元组的python类型错误

使用命名参数时出现“错误:应用于此参数的函数的类型为...”

定义和使用元组作为默认参数

使用 by-name 参数转换为元组

MyPy类型提示使用命名参数定义的函数,但可以使用** kwargs吗?

使用命名元组作为输入参数的API调用

在构造归纳类型时使用元组

如何使用类型参数处理元组中的任何类型?

原因:org.hibernate.QueryException:尚未设置所有命名参数:使用hibernate模板时

在强制转换为不同类型时扩展元组参数

定义元组类型

命名空间外函数定义的参数类型查找

类型参数原因错误

使用参数解包运算符python时如何命名参数

使用 Gensim(Python) 提取二元组时出现类型错误

如何在 Typescript 中使用可变参数元组类型?

提升python返回包含自定义类型的元组

Python-如何使用列表推导填充命名的元组值

类型名称为value的Python函数参数的名称和原因

指定不带元组的参数类型

从元组评估函数的参数类型