当前位置: 首页 > 面试题库 >

在Python中创建一个空对象

朱和惬
2023-03-14
问题内容

是否有用于在Python中定义空对象的快捷方式,还是始终需要创建自定义空类的实例?

编辑:我的意思是一个空的对象可用于鸭打字。


问题答案:

您可以使用type动态创建一个新类,然后实例化它。像这样:

>>> t = type('test', (object,), {})()
>>> t
<__main__.test at 0xb615930c>

要键入的参数是:类名,基类的元组和对象的字典。可以包含函数(对象的方法)或属性。

您实际上可以将第一行缩短为

>>> t = type('test', (), {})()
>>> t.__class__.__bases__
(object,)

因为默认情况下,type创建从对象继承的新样式类。

type在Python中用于元编程。

但是,如果您只想创建对象的实例。然后,只需创建它的一个实例。就像lejlot暗示的那样。

像这样创建一个新类的实例有一个重要的区别,可能有用。

>>> a = object()
>>> a.whoops = 1
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
AttributeError: 'object' object has no attribute 'whoops'

如:

>>> b = type('', (), {})()
>>> b.this_works = 'cool'
>>>


 类似资料:
  • 问题内容: 在Python中创建新的空列表的最佳方法是什么? 要么 我之所以这样问是因为两个原因: 技术原因,关于哪个更快。(创建一个类会导致开销吗?) 代码可读性-这是标准约定。 问题答案: 您可以通过以下方法测试哪段代码更快: 但是,实际上,这种初始化很可能只是程序的一小部分,因此担心此初始化可能会出错。 可读性非常主观。我更喜欢,但是像AlexMartelli这样的一些非常博学的人更喜欢,因

  • 问题内容: 现在我用 但这有点棘手。是否有“标准”方法在Node.js中创建空文件? 问题答案: 如果要强制文件为空,则要改用标志: 如果文件存在,它将截断文件,如果文件不存在,则将创建文件。 如果不需要返回的文件描述符,则将其包装在调用中。

  • 问题内容: 如何在不手动输入的情况下创建许多空列表 是否存在for循环,使我的空列表数量为n? 问题答案: 列表理解在这里最简单: 注意不要掉进陷阱:

  • 我想创建一个可以容纳10个元素的空列表(或者任何最好的方式)。 然后,我要在该列表中分配值,例如,该列表应该显示0到9: 但当我运行此代码时,它会生成一个错误,或者在另一种情况下,它只显示(空)。 有人能解释为什么吗?

  • 问题内容: 我真的对在Swift中创建数组的方式感到困惑。您能否告诉我,有多少种方法可以创建一个带有细节的空数组? 问题答案: 干得好: 上面的内容还适用于其他类型,而不仅仅是字符串。这只是一个例子。 为它增值 我想您最终将要为其添加一个值! 要么 通过插入添加 一旦有了一些值,就可以插入新值而不是附加值。例如,如果要在数组的开头插入新对象(而不是将它们附加到末尾): 或者,您可以使用变量使插入更

  • 问题内容: 我正在使用官方elasticsearch npm。在我的节点应用程序中,我正在使用该客户端创建索引,如下所示 我需要为上述索引放入映射,因此,我必须先创建一个空索引(无数据索引),然后必须执行放置映射,然后将数据放入索引。 因此,我必须创建一个空索引,但是在正式的Elasticsearch客户端中,上述方法(create)是用“ ”方法编写的,因此它需要一个主体。 为此,我必须如上所述

  • 问题内容: 我需要增量填充列表或列表元组。看起来像这样: 为了使它不那么冗长,更优雅,我想我会预先分配一个空列表 预分配部分对我来说并不明显。当我这样做时,我会收到对同一列表的引用列表,因此以下内容的输出 是: 我可以使用循环(),但我想知道是否存在“无环”解决方案。 是获得我想要的东西的唯一方法 问题答案: 这将创建x个不同的列表,每个列表都有一个列表副本(该列表中的每个项目都是通过引用提供的,

  • 如何创建一个可以容纳10个元素的空列表? 之后,我想在该列表中分配值。例如: 但是,这会导致<code>索引器:列表分配索引超出范围。为什么? 在Python中,列表没有设置的容量,但不可能分配给尚未存在的元素。这里的答案显示了创建一个包含10个“伪”元素的列表的代码,以便稍后替换。然而,大多数遇到这个问题的初学者实际上只是想通过向列表中添加元素来构建列表。这应该使用方法,尽管通常会有特定于问题的