擅长:python、mysql、java
<p>它这样说是因为<code>tuple</code>的<code>__new__</code>方法接受参数<code>__new__(*args, **kwargs)</code>。在</p>
<p>您可能已经找到了一些文档,可以使用<code>tuple(iterable)</code>构造一个<code>tuple</code>实例,用初始值预填充元组。这个<code>iterable</code>是<code>tuple</code>类的<code>__init__</code>方法的参数,而不是<code>__new__</code>方法的参数。在</p>
<p>我想你想用的是<code>__init__</code>而不是{<cd2>}。在Python中,<code>__new__</code>方法主要用于元编程。可以将<code>__init__</code>方法视为构造函数,就像在其他语言中使用它一样。<code>__new__</code>方法用于创建类的实例,因此您需要构造一个<code>object</code>并返回该实例。例如,您可以使用<code>__new__</code>来实现singleton模式,方法是始终返回相同的静态对象。<code>__init__</code>方法只是在实例创建之后初始化它,就像普通构造函数那样。在</p>
<p>所以你会用一些类似的东西:</p>
<pre><code>class IntTuple(tuple):
def __init__(self, iterable):
generator = (x for x in iterable if isinstance(x, int) and x > 0)
super().__init__(self, generator)
</code></pre>