2

古いスタイルのクラスと新しいスタイルのクラスの違いを学ぶ前はobject、どちらがインタープリターによって何かに使用されているかを知りませんでした。新しいスタイルのクラスを作成するには、次のようなことをしなければならないことがわかりました。

class Spam(object):
    pass

私の古いコードでは、次のようなオブジェクトのリストをよく繰り返しました。

for object in xml_objects:
    pass

危険なことをしているかどうかはわかりません。戻って、これを行ったケースを見つけて、新しい名前を作成する必要があります。私が理解している限りobjectでは、for ループの範囲内から徴用していますが、外側では保持する必要があります。

戻ってこれらのループを書き直す必要がありますか? もしそうなら、それは悪い形の問題なのか、それとも将来的に実際のバグを引き起こす可能性があるためですか (またはその両方)?

4

1 に答える 1

3

for関数スコープ内でのみそのようなループを記述している限り、すぐに問題が発生することはほとんどありません。トップレベルでは、問題が発生する可能性があります。例えば、

for object in [1, 2, 3]:
    pass

class foo(object):
    pass

次の出力が得られます。

Traceback (most recent call last):
  File "foo.py", line 4, in <module>
    class foo(object):
TypeError: Error when calling the metaclass bases
    int() takes at most 2 arguments (3 given)

ということで、機会があれば修正したいと思います。一般に、潜在的な混乱や潜在的な実行時エラーを回避するために、既存の名前をシャドウイングしないようにすることをお勧めします。まれに価値があると判断する場合もありますが、 の場合はやobjectのような略称が通例です。oobj

于 2013-01-22T20:02:33.807 に答える