"Khi một người nói" mọi thứ là một đối tượng "(như trong Python), anh ta thực sự có nghĩa là" mọi thứ đều là hạng nhất "?"
Đúng.
Mọi thứ trong Python là một đối tượng thích hợp. Ngay cả những thứ là "loại nguyên thủy" trong các ngôn ngữ khác.
Bạn thấy rằng một đối tượng như 2
thực sự có giao diện khá phong phú và tinh vi.
>>> dir(2)
['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__', '__delattr__', '__div__', '__divmod__', '__doc__', '__float__', '__floordiv__', '__getattribute__', '__getnewargs__', '__hash__', '__hex__', '__index__', '__init__', '__int__', '__invert__', '__long__', '__lshift__', '__mod__', '__mul__', '__neg__', '__new__', '__nonzero__', '__oct__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__str__', '__sub__', '__truediv__', '__xor__']
Bởi vì mọi thứ đều là đối tượng hạng nhất trong Python, nên có khá ít trường hợp đặc biệt tối nghĩa.
Ví dụ, trong Java, có các kiểu nguyên thủy (int, bool, double, char) không phải là đối tượng thích hợp. Đó là lý do tại sao Java phải giới thiệu Integer, Boolean, Double và Character như các loại hạng nhất. Điều này có thể khó dạy cho người mới bắt đầu - không rõ ràng tại sao cả loại nguyên thủy và lớp phải tồn tại song song.
Điều đó cũng có nghĩa là lớp của một đối tượng - chính nó - một đối tượng. Điều này khác với C ++, trong đó các lớp không phải luôn có sự tồn tại riêng biệt vào thời gian chạy.
Loại 2
là type 'int'
đối tượng, có các phương thức, thuộc tính và một loại.
>>> type(2)
<class 'int'>
Loại của một kiểu tích hợp như int
là type 'type'
đối tượng. Điều này có phương thức và thuộc tính, cũng.
>>> type(type(2))
<class 'type'>