python基礎——面向物件程式設計
阿新 • • 發佈:2019-01-06
python是面向物件的高階語言,面向物件程式設計的三個特點:1封裝2繼承3多型,
且與面相過程的C相比注重於 誰來執行的方法,而面向過程的語言注重方法的實現過程。
類與物件的的關係就好比與磨具與磨具製作出來的東西:
結果為class People(object): # 類屬性 name = '道德經' age = '' def __init__(self,fond): # 物件屬性 self.fond = fond # 物件方法 self 指的是呼叫方法本身 def say(self): print('Hello') print(People.name) p1 = People() p1.fond = '學習' p1.say() People.say(p1)
D:\pyhon\python.exe D:/課程/第九天/2.物件總結.py
道德經
道德經
學習
Hello
Hello
python的語法比較特殊,類可以呼叫物件的屬性,物件也一樣既能呼叫自己的屬性,也能呼叫類的屬性如上面People.say(p1)
就是類呼叫物件的屬性
私有屬性
在python的物件屬性中,凡是帶下劃線的,都是不希望外部使用,但並不是說我們不能夠使用,如果 _屬性名 這種形式,我們可以通過 物件名._屬性名 這種形式呼叫訪問,如果 __屬性名 我們可以通過 物件名._類名__屬性名 這種形式訪問:
class People(object): def __init__(self,name='',sex='',age='16',fond='學習'): self.name =name # 防止在類外使用屬性使用_呼叫 self._sex = sex self.__age = age self.__fond = fond p = People() p.name = '張三' print(p.name) p._sex = '男' print(p._sex) # 如果有這個屬性 則修改屬性值為等號後面的值 # 如果沒有屬性 則新增 p.girlFriend = '小妹' print(p._People__age)
繼承
子繼父類,會擁有父類的屬性和方法,子類也可以重寫父類的屬性和方法,也可以自己獨有屬性和方法。
當子繼父類時,想要繼承父類的方法或者屬性時候我們可以使用super函式來繼承:
先定義一個父類:
class People(object):
def __init__(self,age='77',sex=''):
self.age = age
self.sex = sex
def eat(self):
print('人類為吃而活')
def breath(self):
print('海賊王歐力瓦朗')
然後定義一個子類繼承People:
class Man(People):
def __init__(self,age='',sex='',huZi=''):
# 繼承父類已有的屬性
super(Man,self).__init__(age,sex)
# self.huZi = huZi
def smoke(self):
print('吸菸有害健康')
def eat(self):
# 繼承父類的eat方法
super(Man,self).eat()
print('上面這句話是繼承自People的,正在說的這句話才是我自己的')
若父類eat()方法還有其他引數時候我們,繼承時也應該傳遞其他引數例如:
父類為eat(self,other)子類繼承則應該寫為super(Man,self).eat(other)
若繼承多個父類,且父類有同名的方法,會繼承第一個父類的方法:
class A(object):
def say(self):
print('my name is A')
class B(A):
def say(self):
print('my name is B')
class C(A):
def say(self):
print('my name is C')
class D(B,C):#B在前面
pass