Pythonクラス属性とオブジェクト属性の違い

Pythonクラス属性とオブジェクト属性の違い

  1. 命名規則:
    1.1クラス属性はクラスによって作成され、命名規則はクラス名です。属性名
    1.2オブジェクト属性はオブジェクトによって作成され、命名規則はオブジェクト名です。属性名
  2. メソッドの呼び出し:
    2.1クラス属性はクラスによって呼び出され
    ます2.2オブジェクト属性はオブジェクトによって呼び出されます
  3. 呼び出しルール:オブジェクト属性がある場合、クラス属性を呼び出すことはできません
  4. オブジェクトプロパティは動的に追加および削除できます。追加後、オブジェクトプロパティは現在のオブジェクトに対してのみ有効になります。削除後、もう一度呼び出すとクラスプロパティが呼び出されます。
class Person(object):
    # 这里的属性实际上属于类属性(用类名来调用)
    name = "person"
    def __init__(self, name):
        pass
        #对象属性
        self.name = name

print(Person.name)
per = Person("tom")
#对象属性的优先级高于类属性
print(per.name)
#动态的给对象添加对象属性
per.age = 18#只针对于当前对象生效,对于类创建的其他对象没有作用
print(Person.name)
print(per.age)
per2 = Person("lilei")
#print(per2.age)  #没有age属性

#删除对象中的name属性,在调用会使用到同名的类属性
print(per2.name)
del per2.name
print(per2.name)

#注意:以后千万不要讲对象属性与类属性重名,因为对象属性会屏蔽掉类属性。但是当删除对象属性后,在使用又能使用类属性了。

おすすめ

転載: blog.csdn.net/zhuan_long/article/details/110313220