欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中class(object)的含義是什么以及用法

 更新時(shí)間:2023年02月03日 15:06:09   作者:Nicola-Zhang  
這篇文章主要介紹了python中class(object)的含義是什么以及用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

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è)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論