欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python之class類和方法的用法詳解

 更新時(shí)間:2023年03月28日 16:05:39   作者:Irving.Gao  
這篇文章主要介紹了python中class類和方法的用法詳解,如果有不太清楚面向?qū)ο蟮念惡头椒ǖ木幊趟枷氲男』锇榭梢越梃b參考本文

類和方法的概念和實(shí)例

  • 類(Class):用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個(gè)對象所共有的屬性和方法。對象是類的實(shí)例。
  • 方法:類中定義的函數(shù)。
  • 類的構(gòu)造方法__init__():類有一個(gè)名為 init() 的特殊方法(構(gòu)造方法),該方法在類實(shí)例化時(shí)會(huì)自動(dòng)調(diào)用。
  • 實(shí)例變量:在類的聲明中,屬性是用變量來表示的,這種變量就稱為實(shí)例變量,實(shí)例變量就是一個(gè)用 self 修飾的變量。
  • 實(shí)例化:創(chuàng)建一個(gè)類的實(shí)例,類的具體對象。
  • 繼承:即一個(gè)派生類(derived class)繼承基類(base class)的字段和方法。繼承也允許把一個(gè)派生類的對象作為一個(gè)基類對象對待。例如,有這樣一個(gè)設(shè)計(jì):一個(gè)Dog類型的對象派生自Animal類,這是模擬"是一個(gè)(is-a)"關(guān)系(例圖,Dog是一個(gè)Animal)。

 1.python類:class

python的class(類)相當(dāng)于一個(gè)多個(gè)函數(shù)組成的家族,如果在這個(gè)Myclass大家族里有一個(gè)人叫f,假如這個(gè)f具有print天氣的作用,那么如果有一天我需要這個(gè)f來print一下今天的天氣,那么我必須叫他的全名MyClass.f才可以讓他給我print,即在調(diào)用他的時(shí)候需要帶上他的家族名稱+他的名稱。

  • 屬性:屬性就是在這個(gè)類里的變量。如果變量是物品,那么不同的屬性就是這個(gè)大家族里不同的物品
  • 方法:方法就是在這個(gè)類里的函數(shù)。如果函數(shù)是人,那么不同的方法就是這個(gè)大家族里不同的人。

 MyClass實(shí)例:

#Myclass家族,但是這個(gè)家族只有一個(gè)人f
class MyClass:   
  """一個(gè)簡單的類實(shí)例"""    
  i = 12345    
  def f(self):        
    return 'hello world'
# 實(shí)例化類
x = MyClass() 
# 訪問類的屬性和方法
print("MyClass 類的屬性 i 為:", x.i) #家族x + 物品名i
print("MyClass 類的方法 f 輸出為:", x.f()) #家族x + 人名f

輸出結(jié)果:

2.類的構(gòu)造方法__init__()

假如init()也是人,但是他是家族和外界聯(lián)絡(luò)員,當(dāng)外界的人想調(diào)用自己家族的人,就必須要先告訴他,所以只要家族的人被調(diào)用,那么init()就會(huì)被先執(zhí)行,然后由他去告訴那個(gè)被調(diào)用的人,執(zhí)行被調(diào)用的。

init()實(shí)例:

class Complex:
    def __init__(self, realpart, imagpart): #必須要有一個(gè)self參數(shù),
        self.r = realpart
        self.i = imagpart
x = Complex(3.0, -4.5)
print(x.r, x.i)   # 輸出結(jié)果:3.0 -4.5

輸出結(jié)果:

3.類中方法的參數(shù)self

?????在類的內(nèi)部,使用 def 關(guān)鍵字來定義一個(gè)方法,與一般函數(shù)定義不同,類方法必須包含參數(shù)self, 且為第一個(gè)參數(shù),self代表的是類的實(shí)例。

  • self:類的方法與普通的函數(shù)只有一個(gè)特別的區(qū)別——必須有一個(gè)額外的第一個(gè)參數(shù)名稱, 按照慣例它的名稱是self。
  • 類的實(shí)例:是將類應(yīng)用在實(shí)例場景之中,比如有個(gè)類里的函數(shù)是f,假如這個(gè)f具有print某一時(shí)刻的天氣狀況的能力,那么如果我需要這個(gè)f來print一下今天12點(diǎn)的天氣,那么讓他打印今天12點(diǎn)的天氣這個(gè)動(dòng)作,就是類的實(shí)例化,讓類中的函數(shù)具有的能力變成真實(shí)的動(dòng)作。

實(shí)例化實(shí)例

#類定義
class people:
    #定義基本屬性
    name = ''
    age = 0
    #定義私有屬性,私有屬性在類外部無法直接進(jìn)行訪問
    #定義構(gòu)造方法
    def __init__(self,n,a):
        self.name = n
        self.age = a
    def speak(self):
        print("%s 說: 我 %d 歲。" %(self.name,self.age))

# 實(shí)例化類
p = people('Python',10,30)
p.speak()

輸出結(jié)果:

4.繼承

假如有兩個(gè)家族,有一個(gè)家族A開始沒落了,另一個(gè)新興的家族B想繼承A家族的物資和傭人,那么就可以通過如下的方式實(shí)現(xiàn)繼承,在這里,家族A即是父類,家族B是子類。在用法上,如果B家族可以任意使用A家族的物品和傭人。

class [子類]([父類]):
  • BaseClassName(示例中的基類名)必須與派生類定義在一個(gè)作用域內(nèi)。除了類,還可以用表達(dá)式,基類定義在另一個(gè)模塊中時(shí)這一點(diǎn)非常有用。
  • python還支持多繼承,即可以繼承多個(gè)父類。繼承方式和單繼承方式一樣,方式如下:
class [子類]([父類]1, [父類]2, [父類]3):

繼承實(shí)例:

#類定義
class people:
    #定義基本屬性
    name = ''
    age = 0
    #定義私有屬性,私有屬性在類外部無法直接進(jìn)行訪問
    __weight = 0
    #定義構(gòu)造方法
    def __init__(self,n,a,w):
        self.name = n
        self.age = a
        self.__weight = w
    def speak(self):
        print("%s 說: 我 %d 歲。" %(self.name,self.age))

#單繼承示例
class student(people): #student為子類,people為父類
    grade = ''
    def __init__(self,n,a,w,g):
        #調(diào)用父類的構(gòu)函
        people.__init__(self,n,a,w)
        self.grade = g
    #覆寫父類的方法
    def speak(self):
        print("%s 說: 我 %d 歲了,我在讀 %d 年級"%(self.name,self.age,self.grade))

s = student('ken',10,60,3)
s.speak()

運(yùn)行結(jié)果:

5.方法重寫

如果你的父類方法的功能不能滿足你的需求,你可以在子類重寫你父類的方法。即如果B家族繼承了A家族,但是B家族有個(gè)傭人只會(huì)掃地,于是A家族給這個(gè)人洗腦,讓他啥都不會(huì),然后再教這個(gè)傭人洗碗、擦桌子的技能,那么這個(gè)傭人就只會(huì)洗碗和擦桌子了。

  • super()函數(shù)是用于調(diào)用父類(超類)的一個(gè)方法。

 方法重寫實(shí)例:

class Parent:        # 定義父類
   def myMethod(self):
      print('調(diào)用父類方法')

class Child(Parent): # 定義子類
   def myMethod(self):
      print('調(diào)用子類方法')

c = Child()          # 子類實(shí)例
c.myMethod()         # 子類調(diào)用重寫方法
super(Child,c).myMethod() #用子類對象調(diào)用父類已被覆蓋的方法

輸出結(jié)果:

類的特殊屬性與方法

類的私有屬性

  • _private_attrs:兩個(gè)下劃線開頭,聲明該屬性為私有,不能在類的外部被使用或直接訪問。在類內(nèi)部的方法中使用時(shí) self.__private_attrs。

 私有屬性實(shí)例:

class JustCounter:
    __secretCount = 0  # 私有變量
    publicCount = 0    # 公開變量

    def count(self):
        self.__secretCount += 1
        self.publicCount += 1
        print(self.__secretCount)

counter = JustCounter()
counter.count()
counter.count()
print(counter.publicCount)
print(counter.__secretCount)  # 報(bào)錯(cuò),實(shí)例不能訪問私有變量

輸出結(jié)果:

類的私有方法

  • __private_method:兩個(gè)下劃線開頭,聲明該方法為私有方法,只能在類的內(nèi)部調(diào)用 ,不能在類的外部調(diào)用。self.__private_methods。

 私有方法實(shí)例:

class Site:
    def __init__(self, name, url):
        self.name = name       # public
        self.__url = url   # private

    def who(self):
        print('name  : ', self.name)
        print('url : ', self.__url)

    def __foo(self):          # 私有方法
        print('這是私有方法')

    def foo(self):            # 公共方法
        print('這是公共方法')
        self.__foo()

x = Site('Python', 'www.irvingao.com')
x.who()        # 正常輸出
x.foo()        # 正常輸出
x.__foo()      # 報(bào)錯(cuò)

輸出結(jié)果:

到此這篇關(guān)于python之class類和方法的用法詳解的文章就介紹到這了,更多相關(guān)class類和方法的用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • matplotlib 輸出保存指定尺寸的圖片方法

    matplotlib 輸出保存指定尺寸的圖片方法

    今天小編就為大家分享一篇matplotlib 輸出保存指定尺寸的圖片方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • pygame畫點(diǎn)線方法詳解

    pygame畫點(diǎn)線方法詳解

    這篇文章主要介紹了pygame畫點(diǎn)線的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-11-11
  • Python ValueError: invalid literal for int() with base 10 實(shí)用解決方法

    Python ValueError: invalid literal for int() with base 10 實(shí)用

    這篇文章主要介紹了Python ValueError: invalid literal for int() with base 10 實(shí)用解決方法,本文使用了一個(gè)取巧方法解決了這個(gè)問題,需要的朋友可以參考下
    2015-06-06
  • Python入門教程(十一)Python中的運(yùn)算符

    Python入門教程(十一)Python中的運(yùn)算符

    這篇文章主要介紹了Python入門教程(十一)Python中的運(yùn)算符,Python是一門非常強(qiáng)大好用的語言,也有著易上手的特性,本文為入門教程,需要的朋友可以參考下
    2023-04-04
  • 點(diǎn)云地面點(diǎn)濾波(Cloth Simulation Filter, CSF)

    點(diǎn)云地面點(diǎn)濾波(Cloth Simulation Filter, CSF)

    這篇文章主要介紹了點(diǎn)云地面點(diǎn)濾波(Cloth Simulation Filter, CSF)“布料”濾波算法介紹,本文從基本思想到實(shí)現(xiàn)思路一步步給大家講解的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • Python AES加密實(shí)例解析

    Python AES加密實(shí)例解析

    這篇文章主要介紹了Python AES加密實(shí)例解析,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • Python語法學(xué)習(xí)之進(jìn)程間的通信方式

    Python語法學(xué)習(xí)之進(jìn)程間的通信方式

    進(jìn)程在創(chuàng)建之后是沒有辦法獲取返回值的,但有的時(shí)候兩個(gè)進(jìn)程之間需要進(jìn)行相互之間的配合才能完成工作,這就需要通信的幫助。本文主要介紹了Python中進(jìn)程間的通信方式,需要的可以了解一下
    2022-04-04
  • python中join()方法介紹

    python中join()方法介紹

    Python join() 方法用于將序列中的元素以指定的字符連接生成一個(gè)新的字符串。這篇文章主要介紹了python中join()方法,需要的朋友可以參考下
    2018-10-10
  • 使用Python腳本備份華為交換機(jī)的配置信息

    使用Python腳本備份華為交換機(jī)的配置信息

    在現(xiàn)代網(wǎng)絡(luò)管理中,備份交換機(jī)的配置信息是一項(xiàng)至關(guān)重要的任務(wù),備份可以確保在交換機(jī)發(fā)生故障或配置錯(cuò)誤時(shí),能夠迅速恢復(fù)到之前的工作狀態(tài),本文將詳細(xì)介紹如何使用Python腳本備份華為交換機(jī)的配置信息,需要的朋友可以參考下
    2024-06-06
  • Python爬蟲如何應(yīng)對Cloudflare郵箱加密

    Python爬蟲如何應(yīng)對Cloudflare郵箱加密

    這篇文章主要介紹了Python爬蟲如何應(yīng)對Cloudflare郵箱加密,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06

最新評論