python中的單下劃和雙下劃線屬性

2021-10-24 08:36:47 字數 2567 閱讀 2530

級別:受保護的屬性

使用:父類物件和子類物件都可以直接呼叫,父類中受保護的屬性可以被子類覆蓋。可以看出它的普通的屬性沒啥區別,但是當使用 from module_name import * 匯入時,單下劃線開頭的變數和方法是不會被匯入的。必須使用 import module_name 匯入整個模組,然後可以用 module_name._物件名 來訪問。

classa(

object):

def__init__

(self)

: self.name =

'yx'

self._age =

24 self.__gender =

'm'def

_printage

(self)

:print

(self._age)

def__printgender

(self)

:print

(self.__gender)

class

b(a)

:# b繼承a

def_printage

(self)

:print(18

)def

__printgender

(self)

:print

('f'

)a = a(

)a.name

'yx'

a._age # 受保護的屬性父類物件可以直接訪問

24a._printage()24

b = b(

)b.name

'yx'

b._age # 受保護的屬性子類物件可以直接訪問

24b._printage(

)# 父類受保護的屬性可以被子類覆蓋

18

級別:私有屬性

使用:父類物件和子類物件都不能直接呼叫,要以 _classname _ _methodname的格式來呼叫,父類中的私有屬性不能被子類覆蓋,因為它們的名稱是不同的。

classa(

object):

def__init__

(self)

: self.name =

'yx'

self._age =

24 self.__gender =

'm'def

_printage

(self)

:print

(self._age)

def__printgender

(self)

:print

(self.__gender)

class

b(a)

:def

_printage

(self)

:print(18

)def

__printgender

(self)

:print

('f'

)a = a(

)a.name

'yx'

a.__gender # 父類物件不能直接訪問

traceback (most recent call last)

: file ""

, line 1,in

attributeerror:

'a'object has no attribute '__gender'

a.__printgender(

)traceback (most recent call last)

: file ""

, line 1,in

attributeerror:

'a'object has no attribute '__printgender'

a._a__gender # 需要以 _classname__methodname 的格式來訪問

'm'a._a__printgender()m

b = b(

)b.name

'yx'

b.__gender # 子類物件更加不能直接訪問

traceback (most recent call last)

: file ""

, line 1,in

attributeerror:

'b'object has no attribute '__gender'

b.__printgender(

)traceback (most recent call last)

: file ""

, line 1,in

attributeerror:

'b'object has no attribute '__printgender'

b._a__gender # 需要以 _classname__methodname 的格式來訪問

'm'b._a__printgender()m

b._b__printgender(

)# 父類的私有屬性不能被覆蓋,因為它們的名稱已經變了

f

Python中單下劃線和雙下劃線

python中存在一些特殊的方法,有些方法以雙下劃線 開頭和結尾,它們是python的魔法函式,比如 init 和 str 等等。不用要這種方式命名自己的變數或者函式。class a def init self,text self.text text def str self return self...

Python中單下劃線和雙下劃線

雙下劃線開頭和結尾 python中存在一些特殊的方法,有些方法以雙下劃線 開頭和結尾,它們是python的魔法函式,比如 init 和 str 等等。不用要這種方式命名自己的變數或者函式。classa def init self,text self.text text def str self re...

python中單下劃線 和雙下劃線(

函式使用單下劃線 開頭 使用單下劃線 開頭的函式 func不能被模組外部以 from module www.cppcns.comimport 形式匯入。但程式設計客棧可以用 from module import func形式單獨匯入。類屬性和類方法使用單下劃線 開頭 開頭為保護型別的屬性和方法,僅允...