0

私はPythonを初めて使用し、非常に単純なものが欠けているに違いないことを知っていますが、なぜこの非常に単純なコードが機能しないのでしょうか。

class myClass:
    pass

testObject = myClass
print testObject.__class__

次のエラーが発生します。

AttributeError: class myClass has no attribute '__class__'

Pythonのすべてのオブジェクトに__class__属性があるわけではありませんか?

4

3 に答える 3

3

私は自分の間違いに気づいたと思います。コードはクラスの新しいインスタンス/オブジェクトを作成していると思いtestObject = myClassましたが、実際にはクラス自体への参照を割り当てていました。コードを次のように変更しました。

class myClass: 
    pass 

testObject = myClass() 
print testObject.__class__ 

そして今、私が期待していたように動作します

于 2010-05-14T16:08:56.160 に答える
2

すべてではありませんが、ほとんどのPythonのオブジェクトには__class__属性があります。通常、これにアクセスして、オブジェクトのクラスを判別できます。

オブジェクトを呼び出すことで、任意のオブジェクトのクラスを取得できますtype

>>> class myClass:
...     pass
... 
>>> testObject = myClass
>>> type(testObject)
<type 'classobj'>
于 2010-05-14T16:05:44.000 に答える
1

__class__古いスタイルのクラスには属性がありません。

class myClass(object):
    pass
于 2010-05-14T16:01:43.077 に答える