class abc(self),這裡的a必須大寫,這個是類class的命名規範
物件導向程式設計
oop程式設計是利用「類」和「物件」來建立各種模型來實現對真實世界的描述,使用物件導向程式設計的原因一方面是因為它可以使程式的維護和擴充套件變得更簡單,並且可以大大提高程式開發效率 ,另外,基於物件導向的程式可以使它人更加容易理解你的**邏輯,從而使團隊開發變得更從容。
物件導向的幾個核心特性如下
class 類
乙個類即是對一類擁有相同屬性的物件的抽象、藍圖、原型。在類中定義了這些物件的都具備的屬性(variables(data))、共同的方法
object 物件
乙個物件即是乙個類的例項化後例項,乙個類必須經過例項化後方可在程式中呼叫,乙個類可以例項化多個物件,每個物件亦可以有不同的屬性,就像人類是指所有人,每個人是指具體的物件,人與人之前有共性,亦有不同
encapsulation 封裝
在類中對資料的賦值、內部呼叫對外部使用者是透明的,這使類變成了乙個膠囊或容器,裡面包含著類的資料和方法
特點:1、防止資料被隨意修改;
2、使外部程式不需要關注物件內部的構造,只需要通過此物件對外提供的介面進行直接訪問即可。
inheritance 繼承
乙個類可以派生出子類,在這個父類裡定義的屬性、方法自動被子類繼承
特點:通過父類--》子類的方式以最小**量的方式實現,不同角色的共同點和不同點同時存在
polymorphism 多型:多種狀態
多型是物件導向的重要特性,簡單點說:「乙個介面,多種實現」,指乙個基類中派生出了不同的子類,且每個子類在繼承了同樣的方法名的同時又對父類的方法做了不同的實現,這就是同一種事物表現出的多種形態。
比如父類人類繼承了talk的技能,但是不同的人種有不同的語言來實現talk的技能。
程式設計其實就是乙個將具體世界進行抽象化的過程,多型就是抽象化的一種體現,把一系列具體事物的共同點抽象出來, 再通過這個抽象的事物, 與不同的具體事物進行對話。
對不同類的物件發出相同的訊息將會有不同的行為。比如,你的老闆讓所有員工在九點鐘開始工作, 他只要在九點鐘的時候說:「開始工作」即可,而不需要對銷售人員說:「開始銷售工作」,對技術人員說:「開始技術工作」, 因為「員工」是乙個抽象的事物, 只要是員工就可以開始工作,他知道這一點就行了。至於每個員工,當然會各司其職,做各自的工作。
定義類和物件
無論用什麼形式來程式設計,我們都要明確記住以下原則:
寫重複**是非常不好的低階行為你寫的**需要經常變更
其實oop程式設計的主要作用也是使你的**修改和擴充套件變的更容易,那麼小白要問了,既然函式都能實現這個需求了,還要oop幹毛線用呢? 呵呵,說這話就像,古時候,人們打仗殺人都用刀,後來出來了槍,它的主要功能跟刀一樣,也是殺人,然後小白就問,既然刀能殺人了,那還要槍幹毛線,哈哈,顯而易見,因為槍能更好更快更容易的殺人。函式程式設計與oop的主要區別就是oop可以使程式更加容易擴充套件和易更改。
下面來展示乙個樣例:
class role(object):
def __init__(self,name,role,weapon,life_value=100,money=15000):
self.name = name
self.role = role
self.weapon = weapon
self.life_value = life_value
self.money = money
def shot(self):
print("shooting...")
def got_shot(self):
print("ah...,i got shot...")
def buy_gun(self,gun_name):
print("just bought %s" %gun_name)
r1 = role('alex','police','ak47') #生成乙個角色
r2 = role('jack','terrorist','b22') #生成乙個角色
先不考慮語法細節,相比靠函式拼湊出來的寫法,上面用物件導向中的類來寫最直接的改進有以下2點:
**量少了近一半
角色和它所具有的功能可以一目了然看出來
我們現來了解一些類的基本定義
類的語法
class dog(object): #建立乙個類
print(
"hello,i am a dog!")
d = dog() #
例項化這個類,
#此時的d就是類dog的例項化物件
#例項化,其實就是以dog類為模版,在記憶體裡開闢一塊空間,存上資料,賦值成乙個變數名
上面的**其實有問題,想給狗起名字傳不進去。下面的例子是正確的:
',"京巴")
OC類和物件 定義類
main.m oc物件導向 created by goddog on 15 1 2.1.object c 支援物件導向的三大特徵 繼承 封裝 多型。2.提供了 private package protected public訪問控制符來實現封裝 1.定義類 1 介面部分 a.定義該類包含的成員變數和...
宣告類和定義物件
class date private,public稱之為成員訪問限定符,此外還有protect。被宣告為private 私有成員 只能被本類中的成員函式引用,而public 公用成員 可以被本類的成員所引用,也可以被類外函式引用,protect宣告的為受保護的成員,不能被類外訪問,但可以被派生類的成...
類和物件(一) 類 物件概念及定義
c 是基於物件導向的語言,並不是純物件導向的語言,因為它包含c的部分,c是面向過程的語言 一 物件導向 概念 物件導向程式設計 oop 是一種程式設計的泛型,同時也是一種程式開發的方法,它將物件作為程式的基本單元,將程式和資料封裝其中,以提高軟體的重用性 靈活性和擴充套件性 二 類和物件的概念 類 ...