日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

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

作者:Nicola-Zhang ? 更新時間: 2023-04-04 編程語言

python class(object)的含義

在python2中有區別,在Python3中已經沒有區別:

object為默認類,表示繼承關系

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中運行結果:

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)的區別

為什么要繼承object類

Python2中,遇到 class A 和 class A(object) 是有概念上和功能上的區別的,分別稱為經典類(舊式類,old-style)與新式類(new-style)的區別。python2中為什么在進行類定義時最好要加object,加 & 不加如下實例。

歷史進程:2.2以前的時候type和object還不統一. 在2.2統一到3之間, 要用class

  • Foo(object)來申明新式類, 因為它的type是 < type ‘type’ > 。
  • 不然的話, 生成的類的type就是 <type ‘classobj’ >。

繼承object類的原因:主要目的是便于統一操作。

  • 在python 3.X中已經默認繼承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類很明顯能夠看出區別,不繼承object對象,只擁有了doc , module 和 自己定義的name變量, 也就是說這個類的命名空間只有三個對象可以操作。

Animal類繼承了object對象,擁有了好多可操作對象,這些都是類中的高級特性。

class, class()和class(object)的區別

python2中寫為如下兩種形式都是不能繼承object類的,也就是說是等價的。

def class:
def class():

繼承object類是為了讓自己定義的類擁有更多的屬性,以便使用。當然如果用不到,不繼承object類也可以。

python2中繼承object類是為了和python3保持一致,python3中自動繼承了object類。

python2中需要寫為如下形式才可以繼承object類。

def class(object):

總結

原文鏈接:https://blog.csdn.net/yangwangnndd/article/details/89384389

欄目分類
最近更新