乙個初學者的辛酸路程 物件導向 7

2022-04-18 12:39:17 字數 3928 閱讀 3222

輪物件的重要性

物件導向程式設計:

oop程式設計,模板和實際的物件來建立各種模型

class類:

就是模板

先寫乙個模板的原因是,後面會建立多個人,只是想傳幾個引數來建立多個人。這樣大多數功能就不需要重寫了。

類,就是對類擁有相同屬性的物件的抽象,藍圖,原型。

每個物件可以有不同的屬性。

手把手教你寫乙個簡單的類

#!/usr/bin/env python

# -*- coding:utf-8 -*-# author: leon xie

#類名,這個是必寫的定義,簡單的定義

#就像定義了乙個函式,只是定義了它,不呼叫它不生效

class dog(object

): # print(

"hello,i am a dog.")

#例項化完了以後,單獨寫乙個功能,功能寫在巢狀裡面

def sayhi(self):

print(

"hello,i am a dog.")

#類是乙個模板,寫了乙個模板,要把它例項化

d =dog()

#記憶體物件有了,但是我沒呼叫

#print(d)

#呼叫d.sayhi()

列印結果

hello,i am a dog.
說明:

#!/usr/bin/env python

# -*- coding:utf-8 -*-# author: leon xie

#類名,這個是必寫的定義,簡單的定義

#就像定義了乙個函式,只是定義了它,不呼叫它不生效

class dog(object

): # print(

"hello,i am a dog.")

def __init__(self,name): #建構函式,構造方法 ==初始化方法

self.name =name

#例項化完了以後,單獨寫乙個功能,功能寫在巢狀裡面

def sayhi(self): #類的方法

#類通過函式平起來的,例項化吧lichuang傳給了init,但是我

#這個地方調不到上面的函式

print(

"hello,i am a dog.my name is

",self.name)

def eat(self,food):

print(

"%s is eating %s

" %(self.name.food))

#類是乙個模板,寫了乙個模板,要把它例項化

d = dog("

lichuang")

#記憶體物件有了,但是我沒呼叫

#print(d)

d2 =dog("

chuang2")

#呼叫d.sayhi()

d2.sayhi()

#我無法區分是哪條狗,所以要傳點引數區分

#類是一堆函式的組合,打通函式見甭能互相呼叫的問題

#沒例項化,上面定義的類是存在的,以模板形式

#例項化後的物件我們叫做例項,當前類的例項

#self就是實力本身,

類的特性

封裝防止資料被隨意修改。

使外部程式不需要關注物件內部的構造,只需要通過物件對外提供的介面進行直接訪問即可。

繼承通過父類- 》子類的方式實現 不同角色的共同點和不同點

開發中避免寫重複的**,否則就相當於給自己挖坑。

函式的出現,就幫我們解決了重複**的問題。

其實oop程式設計的主要作用也是

1、**量少了一半

2、角色和它所具有的功能一目了然

#!/usr/bin/env python

# -*- coding: utf-8 -*-#author: leon xie

class dog(object

): def __init__(self,name): #建構函式,構造方法 ==初始化方法

self.name =name

def sayhi(self): #類的方法 ,寫self原因是把例項本身傳進來

print(

"hello,i am a dog.my name is

",self.name)

'''先例項化,然後在呼叫功能

'''d = dog("

alex")

d2 = dog("

lichuang")

d.sayhi()

d2.sayhi()

列印結果

hello,i am a dog.my name

isalex

hello,i am a dog.my name

is lichuang

self相當於d,d就是例項化後的物件,例項化後產生的物件,叫做例項。當前類的例項。

self就是d,所以self就是例項本身,你生成哪個物件self就是誰

模板如下:

繼承通過父類->子類的方式以最小**量的方式實現不同的角色

物件導向的特性:

封裝類==>例項化==》例項物件

__init__建構函式

self.name = name #屬性,成員變數

def sayhi()  #方法,動態屬性

共有屬性和私有屬性

__private_attr_name = value

只能內部訪問,外部不能訪問

def  get_heart(self):  #對外部提供唯讀訪問介面

return  self.__heart

強制訪問

r1._role__heart  強制訪問私有屬性

公有屬性指所有屬於我這個類的物件都可以訪問

有多少個物件例項化了我都可以訪問的屬性 

在類裡直接定義的就是共有屬性

繼承當同一類的物件,有共同屬性,又有不同屬性的時候,搞乙個分類,搞2個子類分別繼承。

oo開發正規化大致為:

劃分物件--> 抽象類-->將類組織成為層次化結構(繼承和合成)

接下來需要明白的幾個問題:

1、什麼是物件導向程式設計?

用類和物件來實現功能、

以前都寫成乙個函式,賦予這個函式功能,它幫我完成

2、什麼是類,什麼是物件,又有什麼關係?

class 類:

def  函式1():

pass

def  函式2():

pass

#obj是物件,例項化的過程

obj = 類()

obj.函式1()

有時候,函式程式設計能實現?比較麻煩,用物件導向非常的簡單能實現。

3、什麼時候適用物件導向?

- 如果多個函式需傳入多個共用的引數時

- 根據乙個模板建立某些東西

- 應用場景:

4、self 就是呼叫當前方法的物件

class

foo:

def __init__(self,name):

self.name = name

def bar(self):

pass

obj1 =foo()

obj1.bar()

obj2 =foo()

obj2.bar()

靜態欄位的使用場景,每個物件中儲存相同的東西的時候,可以使用靜態字段。

5、封裝?

相當於建立了容器,容器用來裝東西,比喻成記憶體裡的一塊位址,我把一堆東西放在類裡面。

可以說成:類中封裝了字段和方法

物件中封裝了普通欄位的值

6、字段:

普通字段(儲存在物件中)

靜態字段(儲存在類中)

方法:普通方法(儲存在類中,呼叫者物件)

靜態方法(儲存在類中,呼叫者類(無需建立物件),可以有任意個引數)

乙個初學者的RHCE之路

乙個初學者的rhce之路 1 認清你的考試目的,rhce對於初學者來說是很難的,所以我不建議沒有準備好就報考rhce,雖然我也是如此。因為此考試通過率底,靈活性大,我見過的從事linux工作的 十分牛x的人物,考兩次都沒有通過的。所以一定要明確你自己的目的,是要從事linux工作,尤其是linux網...

乙個面向初學者的Python編輯器Mu

mu乙個開源編輯器,是滿足學生可以輕鬆學習編寫python 的工具。作為初學程式設計師的python編輯器,旨在使學習體驗更加愉快。它使學生能夠在早期體驗python的程式設計,而這對於初學者學習新知識的很重要。如果你曾試圖教年輕人如何程式設計,你會立即掌握mu的重要性。大多數程式設計工具都是由開發...

寫給Git初學者的7個建議

英文原文 7 useful git tips for beginners 當我剛剛開始使用 git 的版本控制時,我根本不確定我付出那麼多時間是不是會得到回報。branch stage stash,這些 git 名詞對我來說都非常陌生。而今天的我已不能想象生活沒有 git 會變成什麼樣。git 不僅...