python 私有屬性,繼承

2021-08-21 16:45:59 字數 3377 閱讀 6745

多繼承

# _*_ 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...