68

別のスタック オーバーフローの質問で、Python は「すべてがオブジェクトである」という意味で Ruby に似ていて、Python のすべてが Ruby と同じようにオブジェクトだったということを読みました。

これは本当ですか?Ruby のように Python ではすべてがオブジェクトですか?

この点で両者はどのように異なっているのでしょうか、それとも本当に同じなのでしょうか? たとえば、数字を使って、私が見た Ruby のことを次のように実行できますか。

y = 5.plus 6

Pythonでも同じようにできますか?

4

7 に答える 7

92

DiveIntoPython - すべてがオブジェクトです

Python ではすべてがオブジェクトであり、ほとんどすべてに属性とメソッドがあります。すべての関数には組み込みの属性があり、関数のソース コードで定義された__doc__を返します。doc stringモジュールは、 (sysとりわけ) という属性を持つオブジェクトですpath。などなど。

それでも、これは疑問を投げかけます。オブジェクトとは プログラミング言語が異なれば、「オブジェクト」の定義方法も異なります。一部では、すべてのオブジェクトに属性とメソッドが必要であることを意味します。他の場合は、すべてのオブジェクトがサブクラス化可能であることを意味します。Python では、定義が緩くなります。一部のオブジェクトは属性もメソッドも持たず (これについては第 3 章で詳しく説明します)、すべてのオブジェクトがサブクラス化できるわけではありません (これについては第 5 章で詳しく説明します)。しかし、変数に割り当てたり、関数に引数として渡すことができるという意味では、すべてがオブジェクトです (これについては第 4 章で詳しく説明します)。

Ruby Docs - Python から Ruby へ

Python と同じように、Ruby では... すべてがオブジェクトです

これは Ruby 自身の Web サイトから入手したものです。Python では、すべてがオブジェクトです。

于 2009-05-14T21:40:38.337 に答える
2

はい、私が知る限り、Python ではすべてがオブジェクトです。確かに、プリミティブ型と組み込み型 (int、long、str、float など) はサブクラス化できます。実際、型自体はオブジェクトです。関数はオブジェクトであり、クラスはオブジェクトであり、コード ブロックでさえある意味でオブジェクトです... Python でオブジェクトとして扱えないものは考えられません。

于 2009-05-14T21:40:59.507 に答える