從這篇文章開始,我就開始分享幾個python oop方面的一些特點,希望對大家理解python的oop有協助,其實python的oop相對其他的語言來說是有些地方不同的。我今天就講下其中的一方面私人機制的問題。
其他的語言,比如JAVA,C++的oop文法都比較的規範,有公有,私人和保護的資料類型,而python的話,從我目前的觀察來看,python的類是沒有許可權控制的,所有變數都是可以被外部調用的,那你會說:"python明明有私人的定義方法就是在變數或者方法的面前加上雙下滑線__,但是我告訴你,這個實際上是python的偽私人。只是一種程式員約定俗稱的規定,加了就表示私人變數,但是你如果要在外部調用的話,還是可以調用的。
下面我舉個代碼例子給大家看下:
class Info(object):
def __init__(self):
self.__name = 'jay'
def say(self):
print self.__name
a = Info()
print a.__name
我上面定義了一個對象的私人屬性name,如果你直接用a.__name訪問的話,應該會報錯,說該對象沒有這個屬性,但是你按照我的方法,一樣可以調用出私人屬性的值。
1你先用print a.__dict__ 查詢出對象a裡面的屬性的集合。應該得到結果:{'_Info__name': 'jay'}
2然後你再用print a._Info__name,你試試,應該就可以輸出jay了。
所以從上面看來,python還是非常的靈活,它的oop沒有做到真正的不能訪問,只是一種約定讓大家去遵守,比如大家都用self來代表在類裡的當前對象,你也可以用其他的,只是大家習慣了用self。所以習慣就好,跟隨大家把。。
原創文章請註明轉載自老王python,本文地址:http://www.cnpythoner.com/post/130.html
作者:老王@python python 教程
老王python,提供python相關的python 書籍,python 主機,django 教程和python 下載,希望大家能夠喜歡!