亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

JessYanCoding / 1552人閱讀

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

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

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

關(guān)鍵字class, 括號中的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è)對象(實(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
方法

類的方法, 表示類的對象可以進(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í)例, 即方法中要操作的對象, 這個(gè)和PHP很不一樣, 假如不帶這個(gè)self 參數(shù)

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

會報(bào)錯(cuò), 還說已經(jīng)傳遞了一個(gè)給get_name, 實(shí)際上這個(gè)1 given 就是對象, 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í)候要省略, 為什么的原因就是上面說的, 會自動傳遞進(jìn)去

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

這里順便把完成的類代碼寫下來

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ù)或類或變量, 而不是完全引入,比如, 我們在上面的student模塊文件的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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/37576.html

相關(guān)文章

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

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

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

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

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

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

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

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

    netmou 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<