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

深入淺析Python的類

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

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

創(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.")
 
運行結(jié)果:
My dog's name is Willie.
My dog is 6 years old.

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

__init__方法:特殊方法,每當實例類的時候都會運行。其中的形參self必不可少,而且必須位于最前面。

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

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

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

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

使用類和實例

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()
 
運行結(jié)果:
2016 Audi A4

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

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

繼承

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

現(xiàn)在我們有一個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)建子類實例時,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())
 
運行結(jié)果:
2016 Tesla Model S

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

super()是一個特殊函數(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()
 
運行結(jié)果:
2016 Tesla Model S
This car has a 70-kWh battery.

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

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

導入類

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

導入單個類:

from model_name import class_name

導入一個模塊的多個類:

from model_name import class_name1, class_name2

導入一個模塊所有類:

from model_name import *

導入整個模塊:

import model_name

還可以在一個模塊中導入另一個模塊

python標準庫

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

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() + ".")
 
運行結(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 Socket編程入門教程

    Python Socket編程入門教程

    這篇文章主要介紹了Python Socket編程入門教程,本文包含一個客戶端Socket編程實現(xiàn)和一個服務(wù)器端Socket編程例子,需要的朋友可以參考下
    2014-07-07
  • python 讀取修改pcap包的例子

    python 讀取修改pcap包的例子

    今天小編就為大家分享一篇python 讀取修改pcap包的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python實現(xiàn)判斷數(shù)組是否包含指定元素的方法

    python實現(xiàn)判斷數(shù)組是否包含指定元素的方法

    這篇文章主要介紹了python實現(xiàn)判斷數(shù)組是否包含指定元素的方法,涉及Python中in的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 如何Tkinter模塊編寫Python圖形界面

    如何Tkinter模塊編寫Python圖形界面

    本文講解為何使用Tkinter而非PyQt,創(chuàng)建一個基本的Tkinter程序,模塊化Tkinter程序,希望對大家有幫助。
    2020-10-10
  • 利用Python實現(xiàn)自動生成小學生計算題

    利用Python實現(xiàn)自動生成小學生計算題

    過年期間發(fā)現(xiàn)小外甥已經(jīng)上小學了,我姐說老師今天給他們布置了寒假作業(yè):每天堅持做乘法和加減法混合運算。這我必須幫幫忙,用Python寫了一段自動生成小學生計算題的代碼,希望外甥不要太感謝我
    2023-02-02
  • python自動發(fā)送QQ郵箱的完整步驟

    python自動發(fā)送QQ郵箱的完整步驟

    最近在自己學習Python爬蟲,學到了用Python發(fā)送郵件,覺得這個可能以后比較實用,所以下面這篇文章主要給大家介紹了關(guān)于python自動發(fā)送QQ郵箱的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • python繪制春節(jié)煙花的示例代碼

    python繪制春節(jié)煙花的示例代碼

    這篇文章主要介紹了使用python 實現(xiàn)的簡單春節(jié)煙花效果的示例代碼,請注意,運行本文的代碼之前,請確保計算機上已經(jīng)安裝了Pygame庫,需要的朋友可以參考下
    2024-02-02
  • Python網(wǎng)絡(luò)編程中urllib2模塊的用法總結(jié)

    Python網(wǎng)絡(luò)編程中urllib2模塊的用法總結(jié)

    使用urllib2模塊進行基于url的HTTP請求等操作大家也許都比較熟悉,這里我們再深入來了解一下urllib2針對HTTP的異常處理相關(guān)功能,一起來看一下Python網(wǎng)絡(luò)編程中urllib2模塊的用法總結(jié):
    2016-07-07
  • 利用Python通過獲取剪切板數(shù)據(jù)實現(xiàn)百度劃詞搜索功能

    利用Python通過獲取剪切板數(shù)據(jù)實現(xiàn)百度劃詞搜索功能

    大家是不是嫌棄每次打開百度太麻煩?今天教大家利用Python通過獲取剪切板數(shù)據(jù)實現(xiàn)百度劃詞搜索功能,用程序直接打開網(wǎng)頁,需要的朋友可以參考下
    2021-06-06
  • python中sys.argv參數(shù)用法實例分析

    python中sys.argv參數(shù)用法實例分析

    這篇文章主要介紹了python中sys.argv參數(shù)用法,實例分析了python中sys.argv參數(shù)的功能、定義及使用技巧,需要的朋友可以參考下
    2015-05-05

最新評論