python中class(object)的含義是什么以及用法
python class(object)的含義
在python2中有區(qū)別,在Python3中已經(jīng)沒有區(qū)別:
object為默認(rèn)類,表示繼承關(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中運行結(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類
Python2中,遇到 class A 和 class A(object) 是有概念上和功能上的區(qū)別的,分別稱為經(jīng)典類(舊式類,old-style)與新式類(new-style)的區(qū)別。python2中為什么在進(jìn)行類定義時最好要加object,加 & 不加如下實例。
歷史進(jìn)程:2.2以前的時候type和object還不統(tǒng)一. 在2.2統(tǒng)一到3之間, 要用class
- Foo(object)來申明新式類, 因為它的type是 < type ‘type’ > 。
- 不然的話, 生成的類的type就是 <type ‘classobj’ >。
繼承object類的原因:主要目的是便于統(tǒng)一操作。
- 在python 3.X中已經(jīng)默認(rèn)繼承object類。
# -.- 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類很明顯能夠看出區(qū)別,不繼承object對象,只擁有了doc , module 和 自己定義的name變量, 也就是說這個類的命名空間只有三個對象可以操作。
Animal類繼承了object對象,擁有了好多可操作對象,這些都是類中的高級特性。
class, class()和class(object)的區(qū)別
python2中寫為如下兩種形式都是不能繼承object類的,也就是說是等價的。
def class: def class():
繼承object類是為了讓自己定義的類擁有更多的屬性,以便使用。當(dāng)然如果用不到,不繼承object類也可以。
python2中繼承object類是為了和python3保持一致,python3中自動繼承了object類。
python2中需要寫為如下形式才可以繼承object類。
def class(object):
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何利用python實現(xiàn)把視頻轉(zhuǎn)換成gif圖形
將視頻轉(zhuǎn)換為 GIF 圖形的重要性不言而喻,在信息快速傳播和多種社交平臺廣泛應(yīng)用的背景下,GIF 動畫不僅為個人用戶提供了一種輕松的表達(dá)方式,本文給大家介紹了如何利用python實現(xiàn)把視頻轉(zhuǎn)換成gif圖形,需要的朋友可以參考下2024-10-10Python實現(xiàn)批量更換指定目錄下文件擴(kuò)展名的方法
這篇文章主要介紹了Python實現(xiàn)批量更換指定目錄下文件擴(kuò)展名的方法,結(jié)合完整實例分析了Python批量修改文件擴(kuò)展名的技巧,并對比分析了shell命令及scandir的兼容性代碼,需要的朋友可以參考下2016-09-09Python數(shù)據(jù)分析之雙色球基于線性回歸算法預(yù)測下期中獎結(jié)果示例
這篇文章主要介紹了Python數(shù)據(jù)分析之雙色球基于線性回歸算法預(yù)測下期中獎結(jié)果,涉及Python基于線性回歸算法的數(shù)值運算相關(guān)操作技巧,需要的朋友可以參考下2018-02-02使用?Flask、Celery?和?Python?實現(xiàn)每月定時任務(wù)的步驟
下面給大家分享使用?Flask、Celery?和?Python?實現(xiàn)每月定時任務(wù)的步驟,本文分步驟結(jié)合腳本給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-08-08