多繼承
# _*_ coding:utf-8 _*_
"""file: 多繼承.py
date: 2018-07_22 9:12 am
desc:
"""# 多繼承與單繼承
class
a():
deftest
(self):
print
'這是a----test方法'
defdemo
(self):
print
'這是a------demo方法'
class
b():
defdemo
(self):
print
'這是b----demo方法'
deftest
(self):
print
'這是b-----test方法'
class
c(a,b):
# 多繼承可以讓子類同時擁有多個父類的屬性和方法
# 昨天的子類擁有乙個父類叫單繼承
# 多個父類同時擁有的屬性和方法,子類呼叫前乙個,此方法中呼叫為a
pass
c = c()
c.test()
c.demo()
# 新式類繼承自object,即 class a(object): 經典類class a
子類中呼叫父類私有屬性或方法
類屬性與方法
類的私有屬性
__private_attrs:兩個下劃線開頭,宣告該屬性為私有,不能在類的外部被使用或直接訪問。在類內部的方法中使用時 self.__private_attrs。
類的方法
在類的內部,使用 def
關鍵字可以為類定義乙個方法,與一般函式定義不同,類方法必須包含引數 self,且為第乙個引數
類的私有方法
__private_method:兩個下劃線開頭,宣告該方法為私有方法,不能在類的外部呼叫。在類的內部呼叫 self.__private_methods
python不允許例項化的類訪問私有資料,但你可以使用 object.classname__attrname( 物件名.類名__私有屬性名 )訪問屬性
# _*_ coding:utf-8 _*_
"""file: 子類中呼叫父類的私有屬性或方法.py
date: 2018-07_22 10:06 am
desc:
"""class
a(object):
def__init__
(self):
# 在初始化方法中定義了兩個屬性,乙個公共屬性,乙個私有屬性
self.num1=100
self.__num2=200
# 定義私有方法
def__test
(self):
print
'私有方法%d %d' %(self.num1,self.__num2)
# 呼叫私有屬性
deftest
(self):
print
'%d' %self.__num2
# 呼叫私有方法
self.__test()
class
b(a):
defdemo
(self):
# 在子類的方法中,不能訪問父類的私有屬性
print
'訪問父類的私有屬性 %d' % self.__num2
pass
# 建立乙個子類物件
b = b()
print b
# 在外界不能直接訪問物件的私有屬性/呼叫私有方法
# print b.__num2
# b.__test
# b.demo()
b.test()
繼承私有屬性和方法
# _*_ coding:utf-8 _*_
"""file: 繼承的私有屬性和私有方法.py
date: 2018-07_22 9:43 am
desc:
""""""
父類的私有屬性和私有方法
1子類物件不能在自己的方法內部,直接訪問父類的私有屬性和私有方法
2子類物件可以通過父類的共有方法間接訪問到私有屬性或私有方法
私有屬性,私有方法是物件的隱私,不對外公開,外界以及子類都不能直接訪問
私有屬性,私有方法常做一些內部的事情
"""class
a(object):
def__init__
(self):
# 在初始化方法中定義了兩個屬性,乙個公共屬性,乙個私有屬性
self.num1=100
self.__num2=200
# 定義私有方法
def__test
(self):
print
'私有方法%d %d' %(self.num1,self.__num2)
class
b(a):
defdemo
(self):
# 在子類的方法中,不能訪問父類的私有屬性
print
'訪問父類的私有屬性 %d' % self.__num2
self.__test()
pass
# 建立乙個子類物件
b = b()
print b
# 在外界不能直接訪問物件的私有屬性/呼叫私有方法
# print b.__num2
# b.__test
b.demo()
私有屬性和私有方法
應用場景及定義方式
應用場景
在實際開發中,物件的某些屬性或方法可能只希望在物件的內部使用,而不希望在外部被訪問到
私有屬性 就是 物件 不希望公開的 屬性
私有方法 就是 物件 不希望公開的 方法
定義方法
在定義屬性或方法時,在屬性名或者方法名前增加兩個下劃線,定義的就是私有屬性或方法
"""class women():
def __init__(self,name):
self.name = name
self.__age = 18
def ___secret(self):
print '%s 的年齡是 %d' % (self.name,self.__age)
lily = women('lily')
# 私有屬性,在外界不允許直接訪問
#print lily.age
# 私有方法,外界不允許直接訪問
lily.secret()
python 私有屬性和視為私有屬性
python模組中的視為私有屬性 總的來說,python中有 幾種特殊的屬性 在python模組中,我們經常會見到 x 其中後面兩種 x 是習慣上的私有變數,我們不應該在外部使用它,而是應該通過呼叫內部函式來使用,但這裡是不應該而不是不能,所以要靠我們自覺遵守這個標準,另外,在自定義模組的時候,也要...
python 私有方法,私有屬性 在繼承中的表現
每天一點點 python 私有方法,私有屬性 在繼承中的表現 情況1 如果呼叫的是繼承父類中的公有方法,那麼,可以在這個公有方法 中訪問父類的私有屬性和私有方法 情況2 如果在子類中實現了乙個公有方法,那麼,這個方法是不能呼叫 繼承的父類中的私有方法和私有屬性的 私有方法,私有屬性在繼承中的表現 c...
python類私有屬性
python中沒有private關鍵字,想要建立乙個類私有的變數需要通過命名規則來實現 在變數名之前加兩個下劃線 name,則在類外部就不能直接通過例項.name訪問,具體原理python編譯器將其命名修改為了 類名 name,通過其實例項.類名 name還是可以訪問 class test obje...