python中object
❶ python 的 type 和 object 之間是怎麼一種關系
Python的object和type理解
1、節選自Python Documentation 3.5.2的部分解釋
Objects are Python』s abstraction for data. All data in a Python program is represented by objects or by relations between objects. (In a sense, and in conformance to Von Neumann』s model of a 「stored program computer,」 code is also represented by objects.)
對象是Python對數據的抽象。 Python程序中的所有數據都由對象或對象之間的關系表示。(在某種意義上,並且符合馮·諾依曼的「存儲程序計算機」的模型,代碼也由對象表示的)。
Every object has an identity, a type and a value. An object』s identity never changes once it has been created; you may think of it as the object』s address in memory. The 『is『 operator compares the identity of two objects; the id() function returns an integer representing its identity.
每個對象都有一個標識,一個類型和一個值。 對象的身份一旦創建就不會改變; 你可以把它看作內存中的對象地址。'is'運算符比較兩個對象的標識; id()函數返回一個表示其身份的整數。
An object』s type determines the operations that the object supports (e.g., 「does it have a length?」) and also defines the possible values for objects of that type. The type() function returns an object』s type (which is an object itself). Like its identity, an object』s type is also unchangeable.
對象的類型決定對象支持的操作(例如,「它有長度嗎?」),並且還定義該類型對象的可能值。type()函數返回一個對象的類型(它是一個對象本身)。與它的身份一樣,對象的類型也是不可改變的。
2、Pyhtml的解釋:
object:
class object
The most base type
type:
class type(object)
type(object_or_name, bases, dict)
type(object) -> the object's type
type(name, bases, dict) -> a new type
從上面三個圖可以看出,對象obeject是最基本的類型type,它是一個整體性的對數據的抽象概念。相對於對象object而言,類型type是一個稍微具體的抽象概念,說它具體,是因為它已經有從對象object細化出更具體抽象概念的因子,這就是為什麼type(int)、type(float)、type(str)、type(list)、type(tuple)、type(set)等等的類型都是type,這也是為什麼instance(type, object)和instance(object, type)都為True的原因,即類型type是作為int、float等類型的整體概念而言的。那麼,為什麼issubclass(type, object)為True,而issubclass(object, type)為Flase呢?從第二張圖,即從繼承關系可以看到,type是object的子類,因此前者為True,後者為False。若從Python語言的整體設計來看,是先有對象,後有相對具體的類型,即整體優先於部分的設計思想。
如果從更加本質的視角去看待這些問題的話,就要從Python Documentation-->3. Data Model-->3.1 Objects,values and types找原因了[請參考Python官方標准庫],從標准庫里可以看到:
object是Python對數據的抽象,它是Python程序對數據的集中體現。
每個對象都有一個標識,一個類型和一個值。
對象的類型決定對象支持的操作。
某些對象的值可以更改。 其值可以改變的對象稱為可變對象;對象的值在創建後不可更改的對象稱為不可變對象。
因此,從Python整體設計體系來看的話,就是先有對象,再有標識、類型和值,接著是對對象的操作等等,這也就解釋了圖3的結果形成的原因了。
❷ Python語言是面向對象的語言嗎
是的,Python是面向對象的編程語言,並具備以下特徵:
封裝
面向對象程序設計中的術語對象(Object)基本上可以看做數據(特性)以及由一系列可以存取、操作這些數據的方法所組成的集合。傳統意義上的「程序=
數據結構+演算法」被封裝」掩蓋「並簡化為「程序=對象+消息」。對象是類的實例,類的抽象則需要經過封裝。封裝可以讓調用者不用關心對象是如何構建的而直接進行使用。
繼承
類繼承:
繼承給人的直接感覺是這是一種復用代碼的行為。繼承可以理解為它是以普通的類為基礎建立專門的類對象,子類和它繼承的父類是IS-A的關系。
多重繼承:
不同於C#,Python是支持多重類繼承的(C#可繼承自多個Interface,但最多繼承自一個類)。多重繼承機制有時很好用,但是它容易讓事情變得復雜。
多態
多態意味著可以對不同的對象使用同樣的操作,但它們可能會以多種形態呈現出結果。在Python中,任何不知道對象到底是什麼類型,但又需要對象做點什麼的時候,都會用到多態。方法是多態的,運算符也是多態的。
❸ python的class中的object是什麼意思
object 是指這個類繼承的最頂級的對象。python3.x 中已經可以省略object,可直接
classSample():
pass
❹ python object 需要導入哪個模塊
Python創建模塊及模塊導入的方法。具體分析如下:
python學習手冊中寫道:
定義模塊,只要使用文本編輯器,把一些python代碼輸入到文本中,然後以.py為後綴名進行保存,任何此類文件都會被認為是python模塊。
比如說,下面的代碼輸入到一個文件中,就可以看作是一個模塊:
def printme(var):
print var
if __name__ == '__main__':
printme(1)
假設說輸入到a.py中,那麼import a就可以把這個模塊導入。
然後可執行a.printme(3),屏幕即可列印出3:
>>> a.printme(3)
3
>>>
一個模塊頂層定義的變數,會自動變成模塊的屬性。例如:
data=[1,2,3]
def printme(var):
print var
if __name__ == '__main__':
printme(1)
data變數就是模塊的一個屬性。其實printme也是一個屬性,只不過是一個函數罷了。
引入模塊示例如下:(假定此時data=[1,2,3]未定義)
>>> import a
>>> a.data
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <mole>
a.data
AttributeError: 'mole' object has no attribute 'data'
>>> reload(a)
<mole 'a' from 'C:/py\a.pyc'>
>>> a.data
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <mole>
a.data
AttributeError: 'mole' object has no attribute 'data'
>>>
從上述提示可以看出data屬性未定義,此時再在a.py文件中定義data=[1,2,3],重新載入a模塊,並輸出data屬性:
>>> reload(a)
<mole 'a' from 'C:/py\a.py'>
>>> a.data
[1, 2, 3]
>>>
這里的reload函數可以重新載入一個模塊。如果在模塊代碼中更改了,那麼需要重新載入。
上面a.data,就是訪問模塊中的屬性。
上面的例子是導入一個文件作為一個模塊。
其實python的模塊導入還有更豐富的內容。
除了模塊名之外,python也可以導入指定目錄路徑。python代碼的目錄就稱為包。因此,這類導入就稱為包導入。事實上,包導入是把計算機上的目錄變成python的一個命名空間。而屬性就是目錄中包含的子目錄或者是模塊文件。
看下面例子:
在我的桌面上有一個aa文件夾,裡面有bb文件夾,bb裡面有a.py這個文件。
那麼在aa和bb文件夾中分別放置一個__init__.py,之後,在命令行中import aa.bb.a,就可以導入模塊a了。
❺ python 如何查看object有哪些屬性值
dir([obj]):
調用這個方法將返回包含obj大多數屬性名的列表(會有一些特殊的屬性不包含在內)。obj的默認值是當前的模塊對象。
hasattr(obj, attr):
這個方法用於檢查obj是否有一個名為attr的值的屬性,返回一個布爾值。
getattr(obj, attr):
調用這個方法將返回obj中名為attr值的屬性的值,例如如果attr為』bar』,則返回obj.bar。
setattr(obj, attr, val):
調用這個方法將給obj的名為attr的值的屬性賦值為val。例如如果attr為』bar』,則相當於obj.bar = val。
❻ python 添加了這個奇怪的叫做 object 的 class,它究竟有什麼含義
在Python里,有一句話叫,一切皆對象。而對象的英文單詞就是object。
換句話這個object就代表了Python中的一切,開發Python的龜叔已經給object類定義常用的屬性和方法供認識使用。
當在Python2中,你定義類的時候,加上object,用內置函數dir(你定義類的名字)查看屬性和方法,你定義的類會默認繼承object這個基類(父類)的屬性和方法。如果不給object參數,dir時就只有你自己定義屬性和方法,沒有繼承object的。
你可以下去動手試試(我是手機端回答的問題,抱歉無法演示截圖)
然後,如果你使用的是Python3,當你定義類的時候,給了object參數就繼承。不給object參數也會默認繼承。不管你是
class A:
還是 class A():
都會自動的被Python識別為:
class A(object)(這也是Python3更人性化的一點)