如果子類沒有定義init()方法,子類初始化的時候就會呼叫父類的方法,但是當子類定義了init()方法,子類就不會呼叫父類的init()方法,那如果子類想實現父類構造器中的方法,那就需要用的super()方法
class
parent
(object):
name = 'parent'
age = 100
def__init__
(self,adress,***):
self.adress=adress
self.***=***
print ('my name is parent __init__')
defget_name
(self):
return self.name
defget_age
(self):
# return self.age
print
'my is parent get_age'
#不想用父類的方法,子類重新定義get_name()函式,這種型別叫做重寫
class
chlid
(parent):
def__init__
(self,adress,***):
#想要父類__init__函式的引數時
super(chlid,self).__init__(adress,***)
print ('my name is '.format(self.name))
#自身的方法
print ('my name is child __init__')
defhello
(self):
print ("hello child")
defget_name
(self):
print ('today is nice')
defget_age
(self):
#子類函式想要父類方法時
super(chlid,self).get_age()
#子類自己的方法
print ('my is child get_age')
a = chlid('hangzhou','m')
a.get_name()
#a.hello()
a.get_age()
print a.adress
my name is parent _init_
my name is parent
my name is child _init_
today is nice
my is parent get_age
my is child get_age
hangzhou
1、 _xx 以單下劃線開頭的表示的是protected型別的變數。即保護型別只能允許其本身與子類進行訪問。若內部變數標示,如: 當使用「from m import」時,不會將以乙個下劃線開頭的物件引入 。
2、 __xx 雙下劃線的表示的是私有型別的變數。只能允許這個類本身進行訪問了,連子類也不可以用於命名乙個類屬性(類變數),呼叫時名字被改變(在類foobar內部,__boo變成_foobar__boo,如self._foobar__boo)
3、 xx定義的是特列方法。使用者控制的命名空間內的變數或是屬性,如init , import或是file 。只有當文件有說明時使用,不要自己定義這類變數。 (就是說這些是python內部定義的變數名)
python內建類屬性
dict : 類的屬性(包含乙個字典,由類的資料屬性組成)
doc :類的文件字串
module: 類定義所在的模組(類的全名是』main.classname』,如果類位於乙個匯入模組mymod中,那麼classname.module等於 mymod)
bases : 類的所有父類構成元素(包含了乙個由所有父類組成的元組)
class
a(object):
'''變數的解釋說明'''
_name = '內部變數'
__name = '私有變數'
defhello
(self):
print(self._name)
print(self.__name)
#如果想呼叫私有變數的話需要函式宣告
defget__name
(self):
return self.__name
a = a()
print (a._name)
#這個是沒有許可權訪問的
#print(a.__name)
a.hello()
print(a.get__name())
print(a.__doc__)
內部變數
內部變數
私有變數
私有變數
變數的解釋說明
python類的重寫 私有變數
類的重寫 在python中 有時需要進行重寫,重寫是繼承機制中的乙個重要部分,可以重寫一般方法也可以重寫構造方法,構造方法是用來初始化新建立物件的狀態。class parent object name parent age 100 def init self print my name is par...
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...
類的繼承與方法的重寫
color red color size large size 第乙個是父類 華麗的分割線 定義乙個computer類 public class computer 定義電腦屬性的設定方法 public void setbrand string brand public void setcpu flo...