我对Python还是很陌生,所以这可能是一个愚蠢的问题,但是我不了解type()
and的第一个参数的用途namedtuple()
:
tuple_typename = namedtuple( 'tuple_typename', 'member1 member2 member3' )
custom_typename = type( 'custom_typename', (base_type,), members_dictionary )
我不明白返回值和字符串参数之间的区别吗?如果返回值是类型引用,为什么我们需要将其指定为参数?或者,如果需要将其指定为字符串参数,为什么还要捕获返回值?
和另一个相关的问题:如果输入字符串是类型名称规范,是否有任何方法可以控制将类型名称添加到的名称空间?例如,是否可以从该类之外的现有类中添加子类?
编辑:即使我接受了一个很好的答案,我想知道是否有人可以清除另一件事。一旦定义了命名元组或自定义类型,何时和/或在哪里使用第一个字符串参数?以后如何使用为该参数指定的名称来引用类型名称?那可能吗?还是一旦函数返回值超出范围,类型引用就会丢失吗?更新:查看已接受答案的评论
“名称”是Python中的重载术语。当有人提到“类型名称”时,它可能是两件事之一:
“固有”名称,它是类型本身定义的一部分,可通过其__name__
属性访问。
引用类型的变量的名称。可以有多个引用同一类型的变量,并且这些类型本身都不能访问这些名称。
例如:
>>> 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] 删除。
我来说两句