類的重寫
在python中 有時需要進行重寫,重寫是繼承機制中的乙個重要部分, 可以重寫一般方法也可以重寫構造方法,構造方法是用來初始化新建立物件的狀態。
class parent(object):
name = 'parent'
age = 100
def __init__(self):
print('my name is parent')
def get_name(self):
return self.name
def get_age(self):
return self.age
class child(parent):
def __init__(self):
super(child, self).__init__()
print('my name is clild')
def hello(self):
print('hello child')
a = child()
a.hello()
print(a.get_name())
print(a.get_age())
如果子類沒有定義__init__()方法,子類初始化的時候就會呼叫父類的方法,但是當子類定義了__init__()方法,子類就不會呼叫父類的__init__()方法。
如果子類想實現父類構造器中的方法,然後自己在寫自己特殊的方法,使用super()
類的私有變數和方法
在python中可以通過在屬性變數名前加上雙下劃線定義屬性為私有屬性
特殊變數命名
_xx
以單下劃線開頭的表示的是
protected
型別的變數。即保護型別只能允許其本身與子類進行訪問。
__xx 雙下劃線的表示的是私有型別的變數。只能允許這個類本身進行訪問了,連子類也不可以用於命名乙個類屬性(類變數),呼叫時名字被改變(在類foobar內部,__boo變成_foobar__boo,如self._foobar__boo)
__xx__定義的是特列方法。使用者控制的命名空間內的變數或是屬性,如init , __import__或是file 。只有當文件有說明時使用,不要自己定義這類變數。 (就是說這些是python內部定義的變數名)
python內建類屬性
__dict__ : 類的屬性(包含乙個字典,由類的資料屬性組成)
__doc__ :類的文件字串
__module__: 類定義所在的模組(類的全名是'__main__.classname',如果類位於乙個匯入模組mymod中,那麼classname.__module__ 等於 mymod)
__bases__ : 類的所有父類構成元素(包含了乙個由所有父類組成的元組)
class justcounter:
__secretcount = 0 # 私有變數
publiccount = 0 # 公開變數
def count(self):
self.__secretcount += 1
self.publiccount += 1
print self.__secretcount
counter = justcounter()
counter.count()
counter.count()
print counter.publiccount
Python類的重寫和私有變數
class parent object 定義父類的時候,一定要寫繼承object類,否則會報錯 name parent f def init self address,age self.address address self.age age print my name is format self...
python類的私有變數和私有方法
usr bin env python coding utf 8 time 2017 11 08 8 46 author lijunjiang file class3.py 類的私有變數和私有方法 在python中可以通過在屬性變數名前加上雙下劃線定義屬性為私有屬性 特殊變數命名 1 xx 以單下劃線...
類的私有變數
1.在python 中可以通過在屬性變數名前加上雙下劃線定義屬性為私有屬性 特殊變數命名 案例 class a object zhe shi shuo ming name ling man def hello self print self.name print self.def get self ...