1.在類裡面方法之外定義的屬性必定不能被self修飾–【類裡面方法之外定義的屬性–類屬性】
2.對於有self字首修飾的變數都必須有將類例項化才能使用–【self字首修飾的變數–例項變數】
3.init 函式只會在類例項化時呼叫
當使用的子類的init()函式重寫時:
4.子類例項化時並不會例項化乙個無名基類(父類)
5.類的封裝性不足,子類可呼叫父類的私有方法–當父類私有方法沒有使用例項變數時不會出錯
當使用的子類的init()函式繼承於父類時:
4.子類例項化時會例項化乙個無名基類(父類)
5.類的封裝性不足,子類可呼叫父類的私有方法–當父類私有方法使用例項變數時也不會出錯
樣例1classprogramming.py
class
person
:# 定義在類內部但在方法之外, 被稱為類屬性
*** =
'man'
"""在類裡面方法之外定義的屬性必定不能被self修飾"""
def__init__
(self)
:"""self 指的是類的例項本身,模擬c++中的this,
所以對於有self字首修飾的變數都必須有將類例項化才能使用"""
# init 函式只會在類例項化時呼叫
# 定義該普通變數weight,受限於定義域
weight =
45 self.name =
'#person#'
self.age =
0print
('this is person __init__ function'
)def
print_message
(self)
:print
('this is public function.'
)def
__print_message2
(self)
:print
('this is private function.'
)def
using_pri_func
(self)
: self.__print_message2(
)def
get_name
(self)
:return self.name
defget_age
(self)
:return self.age
class
student
(person)
:def
__init__
(self)
: self.name =
'eugene-forest'
print
('this is student __init__ function'
)"""man = person()
man.print_message()
# 可通過該格式訪問私有函式,側面說明封裝性的不足
man._person__print_message2()"""
usingstu.py
from classpro import student
try:
stu = student(
)print
(stu.get_name())
print
(stu.***)
# print(stu.weight)
print
(stu.get_name())
stu.print_message(
) stu.using_pri_func(
) stu._person__print_message2(
)print
(stu.get_age())
except attributeerror:
print
("'student' object has no attribute '***'"
)
**
this is studentinitfunction
eugene-forest
maneugene-forest
this is public function.
this is private function.
this is private function.
『student』 object has no attribute 『***』
process finished with exit code 0**
樣例二
ps:將student的init()函式注釋掉
classprogramming.py
class
person
:# 定義在類內部但在方法之外, 被稱為類屬性
*** =
'man'
"""在類裡面方法之外定義的屬性必定不能被self修飾"""
def__init__
(self)
:"""self 指的是類的例項本身,模擬c++中的this,
所以對於有self字首修飾的變數都必須有將類例項化才能使用"""
# init 函式只會在類例項化時呼叫
# 定義該普通變數weight,受限於定義域
weight =
45 self.name =
'#person#'
self.age =
0print
('this is person __init__ function'
)def
print_message
(self)
:print
('this is public function.'
)def
__print_message2
(self)
:print
('this is private function.'
)def
using_pri_func
(self)
: self.__print_message2(
)def
get_name
(self)
:return self.name
defget_age
(self)
:return self.age
class
student
(person)
:pass
"""def __init__(self):
self.name = 'eugene-forest'
print('this is student __init__ function')"""
"""man = person()
man.print_message()
# 可通過該格式訪問私有函式,側面說明封裝性的不足
man._person__print_message2()"""
usingstu.py
from classpro import student
try:
stu = student(
)print
(stu.get_name())
print
(stu.***)
# print(stu.weight)
print
(stu.get_name())
stu.print_message(
) stu.using_pri_func(
) stu._person__print_message2(
)print
(stu.get_age())
except attributeerror:
print
("'student' object has no attribute '***'"
)
**this is personinitfunction
#person#
man#person#
this is public function.
this is private function.
this is private function.
0process finished with exit code 0**
python中關於類和類繼承的語句解讀
1.關於類 關於類的定義 class animal object species animal 類變數 def init self,name 類的建構函式 self.name name 定義並賦值類變數 self.attributes 定義並賦值類變數 def add attributes self...
python 中類的繼承
python 中的類可以繼承父類這是眾所周知的。突然發現遇到乙個問題,如果父類和子類都含有某個方法,是採用什麼掉用方式呢,我想的是會呼叫之類方法,如果不存在,則呼叫父類方法。python 應該滿足該就近原則。還是動手驗證下記得清楚,儲存檔案為test.py class parent object d...
python中類的繼承
物件導向程式設計 oop 語言的乙個主要功能就是 繼承 繼承是指這樣一種能力 它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下對這些功能進行擴充套件。class person object 定義乙個父類 deftalk self 父類中的方法 print person is talkin...