1. 程式人生 > >day 6 類的屬性

day 6 類的屬性

ood 轉化 lov 下劃線 python 最好 pro pre prop

1:實例屬性:

    最好在init(self,...)中初始化

    內部調用時都需要加上self.

    外部調用時用instancename.propertyname

  2:類屬性(公有屬性):

    在init()外初始化

    在內部用classname.類屬性名調用

    外部既可以用classname.類屬性名又可以用instancename.類屬性名來調用

如果創建實例的時候實例裏沒有這個屬性而公有屬性裏有,則會鏈接調用類屬性,否則會調用實例自己的屬性。

class Test(object):
    name = ‘hello word‘

a = Test()
print Test.name  # 通過類進行訪問
print a.name    # 通過實例進行訪問
我們發現都是可以訪問的。

但是,如果我們試圖修改這個屬性的話:

class Test(object):
    name = ‘hello word‘

a = Test()
Test.name = ‘python good‘   # 通過類進行修改
print Test.name
print a.name
我們發現兩者都修改成功了。

如果通過實例來修改屬性的話:

class Test(object):
    name = ‘hello word‘

a = Test()
a.name = ‘python good‘  # 通過實例進行修改
print Test.name
print a.name
Test.name沒有修改 成功
a.name成功修改

  3:私有屬性:

    1):單下劃線_開頭:只是告訴別人這是私有屬性,外部依然可以訪問更改

    2):雙下劃線__開頭:外部不可通過instancename.propertyname來訪問或者更改

      實際將其轉化為了_classname__propertyname

            class Flylove:

  price = 123
  def __init__(self):

    self.__direction = ‘go beijing .‘
    zIng = ‘wait car,many person‘

if __name__ == ‘__main__‘:
  print Flylove.price
  fly = Flylove() 

  print fly._Flylove__direction 

上面代碼是直接訪問私有屬性的強制措施

day 6 類的屬性