python 2ではなぜクラス定義を行うときにobjectを追加したほうがいいのか、持たないのはどうですか.

2816 ワード

# -.- 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変数のみを持つ,すなわちこのクラスのネーミング空間は3つのオブジェクトしか操作できない.Animalクラスはobjectオブジェクトを継承し,クラス内の高度な特性である操作可能なオブジェクトが多数存在する.
python類をよく知らない学生にとって、これらの高級特性は基本的に役に立たないが、手書きのフレームワークや大型プロジェクトを書く達人にとって、これらの特性は比較的有用であり、例えばtornadoの中の異常捕獲時にclassでクラスの名前を決めることができ、また高度に柔軟にパラメータを伝える時にdictで完成することができる.
最後にはっきり言う必要がありますが、本稿はpython 2.7.10バージョンに基づいており、実際にはpython 3でobjectがデフォルトでロードされています(objectと書いていなくても).
出典:https://blog.csdn.net/w571523631/article/details/55099385