python中不存在真正的私有方法。為了實現類似於c++中私有方法,可以在類的方法或屬性前加乙個「_」單下劃線,意味著該方法或屬性不應該去呼叫,它並不屬於api。
在使用property時,經常出現這個問題:
class baseform(strandunicode):
...def _get_errors(self):
"returns an errordict for the data provided for the form"
if self._errors is none:
self.full_clean()
return self._errors
errors = property(_get_errors)
這個雙下劃線更會造成更多混亂,但它並不是用來標識乙個方法或屬性是私有的,真正作用是用來避免子類覆蓋其內容。
讓我們來看乙個例子:
class a(object):
def __method(self):
print "i'm a method in a"
def method(self):
self.__method() a = a() a.method()
「__xx__」經常是操作符或本地函式呼叫的magic methods。在上面的例子中,提供了一種重寫類的操作符的功能。
在特殊的情況下,它只是python呼叫的hook。例如,__init__()函式是當物件被建立初始化時呼叫的;__new__()是用來建立例項。
繼承 面試問到)
原型鏈繼承 原型鏈繼承 function father father.prototype.getname function son son.prototype.getage son.prototype new father son.prototype.getsonname var s new son...
可能問到的面試問題
寫在前面 最近總在找工作和被找工作糾纏著,由於各種因素的影響,想去的公司去不了,能去的公司不了解,我想,這到了我該做出抉擇的時刻了!生活中需要做選擇的地方太多了,要綜合各方面的因素,結合自身興趣,選擇乙個最合適的!grab every chance.1 請你自我介紹一下自己好嗎?2 你覺得你個性上最...
面試中被問到關於物件導向的理解
物件導向有三大特性 封裝 繼承和多型。封裝就是將類事物的屬性和行為抽象成乙個類,使其屬性私有化,行為公開化,提供了資料的隱秘性的同時,使 模組化。這樣做使得 的復用性更高。繼承則是進一步將類事物共有的屬性抽象成乙個父類,而每乙個子類是乙個特殊的父類 有父類的行為和屬性,也有自己特有的行為和屬性。這樣...