最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入淺析Python的類

 更新時(shí)間:2018年06月22日 08:51:04   投稿:laozhang  
這篇文章是一篇關(guān)于python基礎(chǔ)知識(shí)內(nèi)容,主要講述了關(guān)于類的相關(guān)知識(shí)點(diǎn),有興趣的朋友參考下。

面向?qū)ο缶幊虝r(shí),都會(huì)遇到一個(gè)概念,類,python也有這個(gè)概念,下面我們通過代碼來深入了解下。

創(chuàng)建和使用類

class Dog():
  def __init__(self, name, age):
    self.name = name
    self.age = age
  def sit(self):
    print(self.name.title() + " is now sitting.")
  def roll_over(self):
    print(self.name.title() + " rolled over!")
 
my_dog = Dog('willie', 6)
print("My dog's name is " + my_dog.name.title() + ".")
print("My dog is " + str(my_dog.age) + " years old.")
 
運(yùn)行結(jié)果:
My dog's name is Willie.
My dog is 6 years old.

class關(guān)鍵字:來定義一個(gè)類。類名通常首字母為大寫。

__init__方法:特殊方法,每當(dāng)實(shí)例類的時(shí)候都會(huì)運(yùn)行。其中的形參self必不可少,而且必須位于最前面。

self形參:類的方法與普通的函數(shù)只有一個(gè)特別的區(qū)別——它們必須有一個(gè)額外的第一個(gè)參數(shù)名稱,但是在調(diào)用這個(gè)方法的時(shí)候

用不為這個(gè)參數(shù)賦值,Python會(huì)提供這個(gè)值。這個(gè)特別的變量指對(duì)象本身。

實(shí)例的方法是指定類名以及需要傳入的實(shí)參。

要訪問實(shí)例的屬性或者調(diào)用方法,可使用句點(diǎn)表示法。

使用類和實(shí)例

class Car():
  def __init__(self, make, model, year):
    self.make = make
    self.model = model
    self.year = year
    self.odometer_reading = 0 #<- here
 
  def get_descriptive_name(self):
    long_name = str(self.year) + ' ' + self.make + ' ' + self.model
    return long_name.title()
 
  def read_odometer(self):
    print("This car has " + str(self.odometer_reading) + " miles on it.")
 
my_new_car = Car('audi', 'a4', 2016)
print(my_new_car.get_descriptive_name())
my_new_car.read_odometer()
 
運(yùn)行結(jié)果:
2016 Audi A4

可以看到,我們給Car類的屬性指定了默認(rèn)值self.odometer_reading = 0。如果要修改它,我們可以通過實(shí)例直接訪問它并修改,比如:my_new_car.odometer_reading = 23。或者通過方法修改屬性的值?;蛘咄ㄟ^方法對(duì)屬性的值進(jìn)行遞增。

class Car():
  --snip--
  #通過方法修改屬性的值
  def update_odometer(self, mileage):
    self.odometer_reading = mileage
 
  #通過方法對(duì)屬性的值進(jìn)行遞增
  def increment_odometer(self, miles):
    self.odometer_reading += miles

繼承

一個(gè)類繼承另一個(gè)類時(shí),他將自動(dòng)獲得另一個(gè)類的所有屬性和方法;原有的類稱為父類,新類稱為子類。子類繼承了其父類的所有屬性和方法,同時(shí)還可以定義自己的屬性和方法。

現(xiàn)在我們有一個(gè)Car類如下

class Car():
  def __init__(self, make, model, year):
    self.make = make
    self.model = model
    self.year = year
    self.odometer_reading = 0 #<- here
 
  def get_descriptive_name(self):
    long_name = str(self.year) + ' ' + self.make + ' ' + self.model
    return long_name.title()
 
  def read_odometer(self):
    print("This car has " + str(self.odometer_reading) + " miles on it.")
 
  def update_odometer(self, mileage):
    self.odometer_reading = mileage
 
  def increment_odometer(self, miles):
    self.odometer_reading += miles

創(chuàng)建子類實(shí)例時(shí),python首先給父類所有屬性賦值。

接下來我們創(chuàng)建新類EleCar

class Car():
  --snip--
 
class ElectricCar(Car):
  def __init__(self, make, model, year):
    super().__init__(make, model, year)
 
my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name())
 
運(yùn)行結(jié)果:
2016 Tesla Model S

首先父類必須位于子類前面。

super()是一個(gè)特殊函數(shù),將父類和子類關(guān)聯(lián)起來。使得可調(diào)用子類的父類的方法__init__(),讓子類包父類的所有屬性。

給子類定義屬性和方法沒有任何限制,比如:

class Car():
  --snip--
 
class ElectricCar(Car):
  def __init__(self, make, model, year):
    super().__init__(make, model, year)
    self.battery_size = 70
 
  def describe_battery(self):
    print("This car has a " + str(self.battery_size) + "-kWh battery.")
 
my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name())
my_tesla.describe_battery()
 
運(yùn)行結(jié)果:
2016 Tesla Model S
This car has a 70-kWh battery.

如果需要重寫父類的方法,只需定義一個(gè)與重寫的父類方法同名的方法即可。

python還可以使用其他類的實(shí)例作為自己類的屬性。

導(dǎo)入類

類似函數(shù),類也可以保存為.py文件形成模塊從而進(jìn)行導(dǎo)入。

導(dǎo)入單個(gè)類:

from model_name import class_name

導(dǎo)入一個(gè)模塊的多個(gè)類:

from model_name import class_name1, class_name2

導(dǎo)入一個(gè)模塊所有類:

from model_name import *

導(dǎo)入整個(gè)模塊:

import model_name

還可以在一個(gè)模塊中導(dǎo)入另一個(gè)模塊

python標(biāo)準(zhǔn)庫

其是一組模塊。模塊collections中有一個(gè)類OrderedDict。字典的鍵值對(duì)沒有順序,但是這個(gè)類幾乎和字典相同,區(qū)別只在于記錄了鍵值對(duì)的順序。

from collections import OrderedDict
 
favorite_languages = OrderedDict()
 
favorite_languages['jen'] = 'python'
favorite_languages['sarah'] = 'c'
favorite_languages['edward'] = 'ruby'
favorite_languages['phil'] = 'python'
 
for name, language in favorite_languages.items():
  print(name.title() + "'s favorite language is " +
language.title() + ".")
 
運(yùn)行結(jié)果:
Jen's favorite language is Python.
Sarah's favorite language is C.
Edward's favorite language is Ruby.
Phil's favorite language is Python.

相關(guān)文章

  • python使用ctypes調(diào)用擴(kuò)展模塊的實(shí)例方法

    python使用ctypes調(diào)用擴(kuò)展模塊的實(shí)例方法

    在本篇文章里小編給大家整理的是一篇關(guān)于python使用ctypes調(diào)用擴(kuò)展模塊的實(shí)例方法內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。
    2020-01-01
  • Python數(shù)據(jù)結(jié)構(gòu)之鏈表詳解

    Python數(shù)據(jù)結(jié)構(gòu)之鏈表詳解

    在順序存儲(chǔ)方式中,根據(jù)數(shù)據(jù)元素的序號(hào)就可隨機(jī)存取表中任何一個(gè)元素,但同時(shí)在插入和刪除運(yùn)算需要移動(dòng)大量的元素,造成算法效率較低。解決此缺陷的一個(gè)辦法是:對(duì)線性表采用鏈?zhǔn)酱鎯?chǔ)方式。本文將介紹鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的特點(diǎn)以及各種基本操作的實(shí)現(xiàn)。需要的可以參考一下
    2022-01-01
  • 利用插件和python實(shí)現(xiàn)Excel轉(zhuǎn)json的兩種辦法

    利用插件和python實(shí)現(xiàn)Excel轉(zhuǎn)json的兩種辦法

    轉(zhuǎn)換Excel表格到JSON格式有很多方法,下面這篇文章主要給大家介紹了關(guān)于利用插件和python實(shí)現(xiàn)Excel轉(zhuǎn)json的兩種辦法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • python卸載numpy出現(xiàn)WinError:拒絕訪問的解決方案

    python卸載numpy出現(xiàn)WinError:拒絕訪問的解決方案

    這篇文章主要介紹了python卸載numpy出現(xiàn)WinError:拒絕訪問的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Tensorflow 定義變量,函數(shù),數(shù)值計(jì)算等名字的更新方式

    Tensorflow 定義變量,函數(shù),數(shù)值計(jì)算等名字的更新方式

    今天小編就為大家分享一篇Tensorflow 定義變量,函數(shù),數(shù)值計(jì)算等名字的更新方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • openCV入門學(xué)習(xí)基礎(chǔ)教程第一篇

    openCV入門學(xué)習(xí)基礎(chǔ)教程第一篇

    OpenCV是計(jì)算機(jī)視覺領(lǐng)域一個(gè)圖像和視頻處理庫,用于各種圖像和視頻分析,如面部識(shí)別和檢測(cè),車牌閱讀,照片編輯,高級(jí)機(jī)器人視覺,光學(xué)字符識(shí)別等等,下面這篇文章主要給大家介紹了關(guān)于openCV入門學(xué)習(xí)基礎(chǔ)教程第一篇的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Python中IO多路復(fù)用模塊selector的用法詳解

    Python中IO多路復(fù)用模塊selector的用法詳解

    selector?是一個(gè)實(shí)現(xiàn)了IO復(fù)用模型的python包,實(shí)現(xiàn)了IO多路復(fù)用模型的?select、poll?和?epoll?等函數(shù),下面就跟隨小編一起來學(xué)習(xí)一下它的具體使用吧
    2024-02-02
  • 一文讀懂Python版本管理工具Pyenv使用

    一文讀懂Python版本管理工具Pyenv使用

    在開發(fā)Python程序的時(shí)候,有時(shí)候可能需要在不同版本的Python上進(jìn)行測(cè)試。pyenv就是這么一個(gè)管理多版本Python的工具,今天給大家分享Python版本管理工具Pyenv使用,感興趣的朋友一起看看吧
    2021-06-06
  • 利用Python批量提取Win10鎖屏壁紙實(shí)戰(zhàn)教程

    利用Python批量提取Win10鎖屏壁紙實(shí)戰(zhàn)教程

    這篇文章主要給大家介紹了關(guān)于利用Python批量提取Win10鎖屏壁紙的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • python實(shí)現(xiàn)邏輯回歸的示例

    python實(shí)現(xiàn)邏輯回歸的示例

    這篇文章主要介紹了python實(shí)現(xiàn)邏輯回歸的示例,幫助大家更好的理解和使用機(jī)器學(xué)習(xí)算法,感興趣的朋友可以了解下
    2020-10-10

最新評(píng)論

渝中区| 石屏县| 平顺县| 颍上县| 普兰县| 城步| 泗洪县| 杭锦旗| 柘荣县| 恩施市| 绥宁县| 湘乡市| 资兴市| 石棉县| 梅河口市| 那坡县| 云阳县| 丹凤县| 陕西省| 泰兴市| 柏乡县| 耒阳市| 府谷县| 吴忠市| 鹿邑县| 灌南县| 乐陵市| 大宁县| 温宿县| 嘉义市| 黎城县| 从化市| 沙河市| 霍邱县| 绥棱县| 新泰市| 隆德县| 兴海县| 虎林市| 松江区| 广灵县|