python中class(object)的含義是什么以及用法
python class(object)的含義
在python2中有區(qū)別,在Python3中已經(jīng)沒(méi)有區(qū)別:
object為默認(rèn)類(lèi),表示繼承關(guān)系
class Person: ? ? name = "zhengtong" class Animal(object): ? ? name = "chonghong" ? if __name__ == "__main__": ? ? x = Person() ? ? print( "Person", dir(x)) ? ? ? y = Animal() ? ? print ("Animal", dir(y))
Python3中運(yùn)行結(jié)果:
person [‘class’, ‘delattr’, ‘dict’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘getattribute’, ‘gt’, ‘hash’, ‘init’, ‘init_subclass’, ‘le’, ‘lt’, ‘module’, ‘ne’, ‘new’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘setattr’, ‘sizeof’, ‘str’, ‘subclasshook’, ‘weakref’, ‘name’]
animal [‘class’, ‘delattr’, ‘dict’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘getattribute’, ‘gt’, ‘hash’, ‘init’, ‘init_subclass’, ‘le’, ‘lt’, ‘module’, ‘ne’, ‘new’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘setattr’, ‘sizeof’, ‘str’, ‘subclasshook’, ‘weakref’, ‘name’]
class, class()和class(object)的區(qū)別
為什么要繼承object類(lèi)
Python2中,遇到 class A 和 class A(object) 是有概念上和功能上的區(qū)別的,分別稱(chēng)為經(jīng)典類(lèi)(舊式類(lèi),old-style)與新式類(lèi)(new-style)的區(qū)別。python2中為什么在進(jìn)行類(lèi)定義時(shí)最好要加object,加 & 不加如下實(shí)例。
歷史進(jìn)程:2.2以前的時(shí)候type和object還不統(tǒng)一. 在2.2統(tǒng)一到3之間, 要用class
- Foo(object)來(lái)申明新式類(lèi), 因?yàn)樗膖ype是 < type ‘type’ > 。
- 不然的話, 生成的類(lèi)的type就是 <type ‘classobj’ >。
繼承object類(lèi)的原因:主要目的是便于統(tǒng)一操作。
- 在python 3.X中已經(jīng)默認(rèn)繼承object類(lèi)。
# -.- coding:utf-8 -.- # __author__ = 'zhengtong' class Person: """ 不帶object """ name = "zhengtong" class Animal(object): """ 帶有object """ name = "chonghong" if __name__ == "__main__": x = Person() print "Person", dir(x) y = Animal() print "Animal", dir(y)
Person ['__doc__', '__module__', 'name']
Animal ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__',
'__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name']
Person類(lèi)很明顯能夠看出區(qū)別,不繼承object對(duì)象,只擁有了doc , module 和 自己定義的name變量, 也就是說(shuō)這個(gè)類(lèi)的命名空間只有三個(gè)對(duì)象可以操作。
Animal類(lèi)繼承了object對(duì)象,擁有了好多可操作對(duì)象,這些都是類(lèi)中的高級(jí)特性。
class, class()和class(object)的區(qū)別
python2中寫(xiě)為如下兩種形式都是不能繼承object類(lèi)的,也就是說(shuō)是等價(jià)的。
def class: def class():
繼承object類(lèi)是為了讓自己定義的類(lèi)擁有更多的屬性,以便使用。當(dāng)然如果用不到,不繼承object類(lèi)也可以。
python2中繼承object類(lèi)是為了和python3保持一致,python3中自動(dòng)繼承了object類(lèi)。
python2中需要寫(xiě)為如下形式才可以繼承object類(lèi)。
def class(object):
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Python?TypeError:?‘float‘?object?is?not?subscriptable錯(cuò)誤解決
- 最新整理Python中的type和object的示例詳解
- Python開(kāi)發(fā)時(shí)報(bào)TypeError:?‘int‘?object?is?not?iterable錯(cuò)誤的解決方式
- Python源碼學(xué)習(xí)之PyType_Type和PyBaseObject_Type詳解
- Python源碼學(xué)習(xí)之PyObject和PyTypeObject
- python源碼剖析之PyObject詳解
- 關(guān)于Python中object類(lèi)特殊方法的解釋
相關(guān)文章
如何利用python實(shí)現(xiàn)把視頻轉(zhuǎn)換成gif圖形
將視頻轉(zhuǎn)換為 GIF 圖形的重要性不言而喻,在信息快速傳播和多種社交平臺(tái)廣泛應(yīng)用的背景下,GIF 動(dòng)畫(huà)不僅為個(gè)人用戶提供了一種輕松的表達(dá)方式,本文給大家介紹了如何利用python實(shí)現(xiàn)把視頻轉(zhuǎn)換成gif圖形,需要的朋友可以參考下2024-10-10Python實(shí)現(xiàn)批量更換指定目錄下文件擴(kuò)展名的方法
這篇文章主要介紹了Python實(shí)現(xiàn)批量更換指定目錄下文件擴(kuò)展名的方法,結(jié)合完整實(shí)例分析了Python批量修改文件擴(kuò)展名的技巧,并對(duì)比分析了shell命令及scandir的兼容性代碼,需要的朋友可以參考下2016-09-09python爬蟲(chóng)框架feapder的使用簡(jiǎn)介
這篇文章主要介紹了python爬蟲(chóng)框架feapde的使用簡(jiǎn)介,幫助大家更好的理解和學(xué)習(xí)使用python爬蟲(chóng),感興趣的朋友可以了解下2021-04-04Python數(shù)據(jù)分析之雙色球基于線性回歸算法預(yù)測(cè)下期中獎(jiǎng)結(jié)果示例
這篇文章主要介紹了Python數(shù)據(jù)分析之雙色球基于線性回歸算法預(yù)測(cè)下期中獎(jiǎng)結(jié)果,涉及Python基于線性回歸算法的數(shù)值運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2018-02-02使用?Flask、Celery?和?Python?實(shí)現(xiàn)每月定時(shí)任務(wù)的步驟
下面給大家分享使用?Flask、Celery?和?Python?實(shí)現(xiàn)每月定時(shí)任務(wù)的步驟,本文分步驟結(jié)合腳本給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-08-08