Python 內(nèi)建函數(shù)列表 > Python 的內(nèi)置函數(shù) object
Python 的內(nèi)置函數(shù) object 是 Python 中最基礎(chǔ)的類,它是所有類的基類。在 Python 中,所有的類都直接或間接地繼承自 object 類。object 類提供了一些默認(rèn)的方法和屬性,這些方法和屬性可以被所有 Python 對(duì)象使用。
基本特性
-
繼承關(guān)系:所有 Python 類默認(rèn)都繼承自
object。例如,定義一個(gè)空類時(shí),實(shí)際上它已經(jīng)隱式地繼承了object類。class MyClass: pass # 等同于 class MyClass(object): pass -
默認(rèn)方法:
object類提供了一些默認(rèn)方法,如__str__,__repr__,__eq__等。這些方法可以在子類中被重寫以實(shí)現(xiàn)自定義行為。-
__str__: 返回對(duì)象的字符串表示,通常用于print()函數(shù)。 -
__repr__: 返回對(duì)象的官方字符串表示,通常用于調(diào)試。 -
__eq__: 定義對(duì)象的相等性比較。
-
-
實(shí)例創(chuàng)建:
object()可以直接創(chuàng)建一個(gè)空對(duì)象實(shí)例。雖然這個(gè)實(shí)例沒有自定義的屬性和方法,但它擁有object類提供的基本功能。obj = object() print(obj) # 輸出: <object object at 0x...>
應(yīng)用場(chǎng)景
-
作為基類:在自定義類時(shí),
object可以作為基類,用于定義新的數(shù)據(jù)類型。例如:class Person(object): def __init__(self, name): self.name = name def __str__(self): return f"Person: {self.name}" -
類型檢查:
object是所有類的基類,因此可以用它來進(jìn)行類型檢查。例如:isinstance(42, object) # 返回 True isinstance("hello", object) # 返回 True -
默認(rèn)行為:當(dāng)需要?jiǎng)?chuàng)建一個(gè)沒有任何自定義行為的對(duì)象時(shí),可以直接使用
object()。這在某些特殊情況下可能有用,比如作為占位符或默認(rèn)值。default_obj = object()
示例代碼
以下是一個(gè)簡(jiǎn)單的示例,展示如何使用 object 類和自定義類:
# 定義一個(gè)繼承自 object 的類
class Animal(object):
def __init__(self, name):
self.name = name
def __str__(self):
return f"Animal: {self.name}"
# 創(chuàng)建實(shí)例
dog = Animal("Dog")
print(dog) # 輸出: Animal: Dog
# 檢查繼承關(guān)系
print(isinstance(dog, object)) # 輸出: True
print(issubclass(Animal, object)) # 輸出: True
注意事項(xiàng)
- 在 Python 3 中,所有類默認(rèn)繼承自
object,因此不需要顯式地寫出(object)。但在 Python 2 中,如果不顯式繼承object,創(chuàng)建的是舊式類(old-style class),這會(huì)影響到方法解析順序(MRO)和一些內(nèi)置方法的行為。 -
object實(shí)例本身沒有__dict__屬性,因此不能動(dòng)態(tài)添加屬性。如果需要?jiǎng)討B(tài)添加屬性,可以繼承object并定義__dict__或使用其他方式。
總之,object 類是 Python 類體系的根基,理解它的作用和特性對(duì)于掌握 Python 面向?qū)ο缶幊讨陵P(guān)重要。