3

なんらかの理由で、頭を悩ませてい__init__ます__new__。端末から正常に実行されるコードがたくさんありますが、Google クイック検索ボックスのプラグインとして読み込むと、エラーが発生しますTypeError: default __new__ takes no parameters

私はエラーについて読んでいて、頭が回転するようなものです。現状では、サブクラスのない 3 つのクラスがあり、各クラスには独自defの があります。def __init__またはを使用したことはありませんdef __new__が、これらがエラーを引き起こす関数 (またはその欠如) であるという明確な感覚を得ました。

私は少し頭がおかしいので、ここで役立つスニペットにコードを要約する方法がわかりませんが、スクリプト全体はgithubで見つけることができます。誰かが私のコードをバグ修正してくれるとは思っていません。なぜこのエラーがポップアップするのか、または__init__and/または__new__機能を真剣に評価します。

4

2 に答える 2

7

問題を再現する最も簡単な方法:

>>> class Bah(object): pass
... 
>>> x = Bah(23)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: default __new__ takes no parameters

そのため、コード内に定義されていないクラスがあり (端末から実行したときではなく、その後は非常に異なるインポートを行う)、__init__いくつかのパラメーターを使用してクラスを呼び出しているようです。エラー トレースバックでは、呼び出しが発生した場所を取得する必要があります (たとえば、GUI の微妙な問題が原因でそうでない場合は、すべてに try/except を使用し、except 句でトレースバックを /tmp ファイルにダンプするようにしてください。モジュールtracebackを標準ライブラリから)。

于 2010-03-12T01:40:03.793 に答える
2

欠けていると思われる基本的なクラス構築の概念がいくつかあります。

この__init__メソッドは、クラスが最初にinitialized されるときに使用され、その内部を設定する方法です。また、Python の新しいスタイルのクラス(Python 3 のデフォルト)も利用したいと考えています。

Dive Into Pythonから始めて、そこから分岐することをお勧めします。

于 2010-03-12T01:44:32.257 に答える