1、物件導向的優點:
物件導向是一種結構化的程式設計方式,好處如下:
(1)通過封裝明確了內、外
(2)通過繼承+多型在語言層面支援了歸一化設計
歸一化設計原理:使用介面函式、一切皆檔案
2、類的定義
類是一種資料結構,就好比乙個模型,該模型用來表述一類事物(事物即資料和動作的結合體),用它來產生真實的物體(例項)
3、物件的定義
你看到的一切事物都是乙個個的物件,可以把物件理解成為乙個具體的事物(擁有資料和動作的結合體)
4、類和物件的關係
物件都是由類產生的,上帝造人,首先有乙個造人的模板,這個模板即人的類,然後上帝根據類的定義來生產乙個個的人
5、例項化定義
由類生產物件的過程叫例項化,類例項化的結果就是乙個物件,或者叫做乙個例項(例項=物件)
6、物件導向設計:將一類具體事物的資料和動作整合到一起
7、物件導向程式設計:用了定義類+例項物件的方式去實現物件導向的設計
8、靜態方法
staticmethod靜態方法只是名義上的歸屬類,不能使用類變數和例項變數,是類的工具包
class room:
def __init__
(self,name,owner,width,length)
: self.name=name
self.owner=owner
self.width=width
self.length=length
@property
def cal_area
(self)
: area=self.width * self.length
return area
@staticmethod
def wash_room()
:print
("這裡是洗浴室"
)r1=
room
("別墅"
,"lalala"
,100
,100
)print
(r1)
#輸出結果:
<__main__.room object at 0x1038f51c0
>
9、組合
(1)定義:定義乙個類,通過資料屬性形成乙個例項化的物件,這就是組合
(2)用途:
10、物件導向三大特性:繼承、封裝、多型
(1)繼承
class parentclass1:
pass
class parentclass2:
pass
#單繼承
class sonclass1
(parentclass1)
:
pass
#多繼承
class sonclass2
(parentclass1,parentclass2)
:
pass
(2)繼承和集合的選擇?
class animal:
def eat
(self)
: pass
def drink
(self)
: pass
def la
(self)
: pass
def sa
(self)
: pass
class dog
(animal)
: def wang
(self)
:print
("汪汪汪"
)class cat
(animal)
: def miao
(self)
:print
("喵喵喵"
)
(3)繼承的含義
class animal:
def eat
(self)
: pass
def drink
(self)
: pass
class dog
(animal)
: def eat
(self)
:print
("c吃"
)
def drink
(self)
:print
("喝"
)
def wang
(self)
: pass
說明:
import abc
class animal
(metaclass=abcmeta)
: @abc.abstractmethod
def eat
(self)
: pass
class dog
(animal)
: @abc.abstractmethod
def eat
(self)
:print
("c吃"
) def wang
(self)
: pass
(4)繼承順序
區分經典類和新式類:
新式類包含很多功能,從寫法上父類繼承了object類測試新式類,否則是經典類
經典類:
class a:
pass
class b
(a):
pass
新式類:
class a
(object)
: pass
class b
(a):
pass
(5)子類呼叫父類方法,可以直接引用父類的__ init__()函式
class vehicle:
country=
"china"
def __init__
(self,name,speed,load,power)
: self.name=name
self.speed=speed
self.load=load
self.power=power
def run
(self)
:print
("開動啦"
)class subway
(vehicle)
: def __init__
(self,name,speed,load,power,line)
: vehicle.
__init__
(self,name,speed,load,power)
self.line=line
def show_info
(self)
:print
(self.name,self.speed,self.load,self.power,self.line)
s1=subway
("地鐵"
,"543m/s"
,"10000000"
,"電"
,"13號線"
)s1.
show_info()
輸出結果:
地鐵 543m/s 10000000 電 13號線
也可以直接用supper()呼叫,就把vehicle.__init__變成supper.init Python 之物件導向 繼承
目標 單繼承多繼承 物件導向三大特性 封裝 根據 職責 將 屬性 和 方法 封裝 到乙個抽象的 類 中 繼承 實現 的重用,相同的 不需要重複的編寫 多型 不同的物件呼叫相同的方法,產生不同的執行結果,增加 的靈活度 單繼承1.1 繼承的概念 語法和特點 繼承的概念 子類 擁有 父類 的所有 方法 ...
python之物件導向
類 是乙個特殊的物件,class a 定義的類屬於 類物件 類的例項 obj a 屬於 例項物件 例項屬性 init 定義例項屬性 例項方法 self 物件名.方法名 類屬性 針對類物件定義的屬性,訪問類屬性方法 類名.類屬性 物件名.類屬性 類方法 針對類物件定義的方法,內部可直接訪問類屬性和其他...
python之物件導向
python中一切皆物件 class 定義的類屬於類物件 obj1 屬於例項物件 在程式執行時,類同樣會載入到記憶體,類物件在記憶體中只有乙份,使用乙個類可以建立出很多例項物件 除了封裝例項的屬性和方法外,類物件還可以擁有自己的屬性和方法 類屬性和例項屬性 類屬性就是給類物件中定義屬性,通常用來記錄...