級別:受保護的屬性
使用:父類物件和子類物件都可以直接呼叫,父類中受保護的屬性可以被子類覆蓋。可以看出它的普通的屬性沒啥區別,但是當使用 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形式單獨匯入。類屬性和類方法使用單下劃線 開頭 開頭為保護型別的屬性和方法,僅允...