我是 Python 新手,我有一個關于 OOP 的問題。因此,當我們創建一個類時,我們在括號中寫上“物件”。例如,
class My(object):
我在某處讀到這意味著該類繼承自objectPython 中的類。但我也讀過我們創建的每個類都是該類的一個實體type。所以我的問題是object類與類相同type,如果是,為什么當要求 Python 列印類的型別時,它回傳<class 'type'>而不是<class 'object'>. 還有,為什么不能寫
class My(type):
如果object班級和type班級相同?
uj5u.com熱心網友回復:
這里有兩種關系:instance of和subtype of。對于非編程類比,您可以像這樣考慮差異。坐在桌子上的特定蘋果是“apple”的一個實體。這是一個蘋果的例子,那個特別的。另一方面,“蘋果”作為一個概念是“水果”的一個子型別。每個蘋果都是水果。說坐在你桌上的特定蘋果是任何事物的子型別是不準確的,因為它是特定的。說“蘋果”的概念是“水果”的一個實體是沒有意義的,因為它不是。
你在 Python 中定義的每個類都是 的子型別,object它是所有型別的型別。類本身也是 Python 中的一個物件,它的型別是type. 后者可用于進行一些巧妙的元編程,但這是您現階段可能不需要搞亂的高級 Python。
class Foo(object):
pass
assert isinstance(Foo, type) # Foo is a type
assert issubclass(Foo, object) # Foo is a subclass of object
assert isinstance(Foo, object) # Every type (and everything in Python) is an object
assert isinstance(Foo(), Foo) # A specific foo is a Foo
assert isinstance(Foo(), object) # A specific foo is an object
現在,當你學習 Python 時,忘記type存在是很安全的。它花哨而復雜,用于一些非常復雜的元編程技巧。現在,只需使用object并假設類是一些神奇的東西,并學習如何使用它們。一旦你有了堅實的基礎,你就可以了解它們如何作業的細節。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/498099.html
下一篇:三菱M70宏變數讀取三菱M80公共變數采集三菱CNC變數讀取采集三菱CNC遠程刀補三菱機床在線刀補三菱數控在線測量
