淺談python oop

來源:互聯網
上載者:User

從這篇文章開始,我就開始分享幾個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 下載,希望大家能夠喜歡!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.