成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python OOP實(shí)現(xiàn)

JessYanCoding / 1510人閱讀

摘要:面向?qū)ο缶幊痰乃枷朐诤芏嗾Z(yǔ)言中都已經(jīng)很成熟了,在里,也支持這種編程方式面向編程里面的幾個(gè)概念類,對(duì)象,屬性,方法,下面就用例子看一下如何實(shí)現(xiàn)類,對(duì)象實(shí)例關(guān)鍵字括號(hào)中的表是類繼承的類,默認(rèn)都至少要繼承一個(gè)叫的類比如要定義一個(gè)學(xué)生類這里我們僅僅

OOP(面向?qū)ο缶幊?的思想在很多語(yǔ)言中都已經(jīng)很成熟了, 在Python里, 也支持這種編程方式
面向編程里面的幾個(gè)概念: 類, 對(duì)象, 屬性, 方法,下面就用例子看一下如何實(shí)現(xiàn)

類, 對(duì)象(實(shí)例)
class Classname(object):

關(guān)鍵字class, 括號(hào)中的object表是Classname類繼承的類, 默認(rèn)都至少要繼承一個(gè)叫object的類

比如要定義一個(gè)學(xué)生類:

class Student():
    pass

這里我們僅僅是定義了一個(gè)類, 并未做任何實(shí)際的工作

那如何使用一個(gè)類呢, 當(dāng)然要實(shí)例化這個(gè)類了

s = Sutdent()
print s #<__main__.Student object at 0x7fb60ad6c450>

那這個(gè)s 其實(shí)就是這個(gè)類的一個(gè)對(duì)象(實(shí)例),

屬性

這個(gè)其實(shí)就是類中的一些變量, 可以外部賦值, 也可內(nèi)部定義, 假設(shè)我們外部定義某個(gè)Student實(shí)例的名字

s.name = "Yi_Zhi_Yu"
print s.name #Yi_Zhi_Yu

在類內(nèi)部定義

class Student():
    name = "Yi_Zhi_Yu"
 
s = Sutdent()
print s.name #Yi_Zhi_Yu
方法

類的方法, 表示類的對(duì)象可以進(jìn)行的操作

class Student():
    name = "Yi_Zhi_Yu"
    
    def set_name(self, name):
        self.name = name
   
    def get_name(self)
        return self.name
 #實(shí)例化
 s = Sutdent()
 s.set_name("Tony")
 print s.get_name() #Tony

注意, 類中的每個(gè)方法定義的時(shí)候都至少要帶一個(gè)參數(shù) self, 他代表的是綁定的實(shí)例, 即方法中要操作的對(duì)象, 這個(gè)和PHP很不一樣, 假如不帶這個(gè)self 參數(shù)

def get_name()
        return "Tony" 
print s.get_name()    
#TypeError: get_name() takes no arguments (1 given)    

會(huì)報(bào)錯(cuò), 還說(shuō)已經(jīng)傳遞了一個(gè)給get_name, 實(shí)際上這個(gè)1 given 就是對(duì)象, get_name中需要有個(gè)參數(shù)接收, 就是self, 所以實(shí)際上這個(gè)self也可以用其他名稱代替, 因?yàn)樗麅H僅是個(gè)參數(shù)名

def get_name(m):
    return m.name      
print s.get_name() # Tony  

這個(gè)self也僅僅是在定義方法時(shí)帶, 實(shí)際調(diào)用的時(shí)候要省略, 為什么的原因就是上面說(shuō)的, 會(huì)自動(dòng)傳遞進(jìn)去

另外在說(shuō)一個(gè)特殊的方法, 在實(shí)例化類的時(shí)候, 往往需要在實(shí)例的時(shí)候就執(zhí)行某些操作, 在PHP中叫構(gòu)造函數(shù), 那python中呢: __init__

這里順便把完成的類代碼寫下來(lái)

class Student():
    name = ""

    def __init__(self, name): #自然要帶self
        self.name = name

    def set_name(self, name):
        self.name = name

    def get_name(m):
        return m.name
 
 s = Student("Yi_Zhi_Yu")
 print s.get_name() #Yi_Zhi_Yu
模塊與類

我們寫好了上面的類, 文件名稱叫student.py, 如何被其他模塊引入呢
第一種方式

import student
s = student.Student("Yi_Zhi_Yu")
print s.get_name() #Yi_Zhi_Yu

另一種方式

from student import Student
s = Student("Yi_Zhi_yu")
print s.get_name()

其實(shí), 第二種方式是用于引入某個(gè)模塊的某些函數(shù)或類或變量, 而不是完全引入,比如, 我們?cè)谏厦娴膕tudent模塊文件的Student類外層添加一個(gè)函數(shù)

def f_i_test():
      print "Hello World"

當(dāng)我們需要這個(gè)模塊中的這個(gè)函數(shù),而不需要Student類的時(shí)候, 就可以使用

from student import f_i_test
f_i_test() #Hello World

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/37576.html

相關(guān)文章

  • Python 面向?qū)ο缶幊?em>OOP (一) 類,對(duì)象,屬性,訪問(wèn)權(quán)限

    摘要:面向?qū)ο缶幊讨镁幊淌鞘裁创蠹液茫鳛樾“?,最近學(xué)習(xí)了很多編程的知識(shí),因?yàn)槟X容量有限,特此一一按照學(xué)習(xí)順序記錄下來(lái),如果哪里有錯(cuò)誤,還請(qǐng)大神盡快指出,以免誤導(dǎo)他人。。。繼承也允許把一個(gè)派生類的對(duì)象作為一個(gè)基類對(duì)象對(duì)待。 Python面向?qū)ο缶幊讨?OOP編程是什么 大家好,作為小白,最近學(xué)習(xí)了很多Python OOP編程的知識(shí),因?yàn)槟X容量有限,特此一一按照學(xué)習(xí)順序記錄下來(lái),如果哪里有...

    hiyayiji 評(píng)論0 收藏0
  • [原創(chuàng)]nim與rust的特點(diǎn)比較

    摘要:與的特點(diǎn)比較這兩個(gè)目前都是小眾語(yǔ)言做了些時(shí)間的研究寫了點(diǎn)東西有了點(diǎn)心得相似點(diǎn)有衛(wèi)生宏區(qū)別與的不衛(wèi)生宏在類或定義體之外定義函數(shù)代碼沒(méi)有分成頭與實(shí)現(xiàn)體例如的頭與實(shí)現(xiàn)的與定義的接口定義與實(shí)現(xiàn)定義是分開(kāi)的而與是不分開(kāi)的運(yùn)用函數(shù)式編程高階函數(shù)目前是新 nim與rust的特點(diǎn)比較 這兩個(gè)目前都是小眾語(yǔ)言,做了些時(shí)間的研究,寫了點(diǎn)東西有了點(diǎn)心得 相似點(diǎn): 有衛(wèi)生宏.區(qū)別與C++的(不衛(wèi)生)宏 在類...

    DevTalking 評(píng)論0 收藏0
  • [零基礎(chǔ)學(xué)python]類的細(xì)節(jié)

    摘要:在對(duì)象接口后包裝其實(shí)現(xiàn)的細(xì)節(jié),從而隔離了代碼的修改對(duì)用戶產(chǎn)生的影響。類提供了一個(gè)新的本地作用域,最小化了變量名沖突。類其實(shí)并沒(méi)有結(jié)束,不過(guò)本講座到此對(duì)類暫告一段。 前面對(duì)類的有關(guān)內(nèi)容已經(jīng)描述不少了,其實(shí)話題遠(yuǎn)遠(yuǎn)沒(méi)有結(jié)束,不過(guò)對(duì)于初學(xué)者,掌握這些已經(jīng)算是入門,在以后的實(shí)踐中,還需要進(jìn)行體會(huì)和感悟。 這幾天和幾個(gè)朋友以各種途徑討論過(guò)OOP的相關(guān)問(wèn)題,他們是:令狐蟲、Frank、晉劍、小馮...

    Fundebug 評(píng)論0 收藏0
  • Python 面向?qū)ο缶幊?em>OOP (四) 寫類神器:attrs

    摘要:它的目標(biāo)就是在不減慢你編程速度的前提下,幫助你來(lái)編寫簡(jiǎn)潔而又正確的代碼。對(duì)于這種情況,我們就需要有條件來(lái)控制某些屬性不能為非法值。所以,一定要在里面某個(gè)錯(cuò)誤。 使用attrs解放雙手 大家好,這一期我想和大家分享一個(gè)OOP編程的高效神器:attrs庫(kù) 首先我們來(lái)介紹下 attrs 這個(gè)庫(kù),其官方的介紹如下: attrs 是這樣的一個(gè) Python 工具包,它能將你從繁綜復(fù)雜的實(shí)現(xiàn)上解脫...

    netmou 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<