私は Java プログラミング出身で、Python は初めてです。整数、浮動小数点数、文字列リテラルも Python プログラミングのオブジェクトと見なす必要がありますか?
例: 2
, 4.3
,'stackoveflow'
私は Java プログラミング出身で、Python は初めてです。整数、浮動小数点数、文字列リテラルも Python プログラミングのオブジェクトと見なす必要がありますか?
例: 2
, 4.3
,'stackoveflow'
Python ではすべてがオブジェクトです。偶数関数と単純な数値/ブール値。
オブジェクトは、データに対する Python の抽象化です。Python プログラムのすべてのデータはオブジェクトで表されます
これにはいくつかの利点があります。たとえば、 のような型を簡単にサブクラス化できます。デフォルトの動作を備えたカスタム型が必要なstr
場合unicode
に、追加の機能が必要な場合 (テンプレート エンジンで文字列を HTML セーフとしてマークするためによく行われます)。
もう 1 つのより一般的なのは、join()
文字列に対するメソッドです。ほとんどの言語には配列にそのようなメソッドがありますが、Python には、このように使用される文字列メソッドとしてそれがあり、任意のiterable/sequence をそれに渡すことができます。', '.join(some_iterable)
すべての値は Python のオブジェクトです。42
、"stackoverflow"
、および(1,)
はすべてオブジェクトであり、タイプは:
>>> (42).bit_length() # parentheses necessary for syntactic reasons
6
>>> "stackoverflow".upper()
'STACKOVERFLOW'
>>> type((1,))
<type 'tuple'>
はい。実際、そうすることがいくつかの一般的なイディオム、特に文字列の書式設定の中心となっています。
>>> "Hello {}".format("name")
'Hello name'
シーケンスのアイテムを結合します。
>>> a = ['one', 'two', 'three']
>>> ' + '.join(a)
'one + two + three'
どちらもオブジェクトである文字列リテラルに依存しているため、それらのメソッドを呼び出すことができます。
はい、すべての値は Python のオブジェクトです。例えば:
>>> dir(3)
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
>>> (3).__str__()
'3'