亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

深入淺析Python的類

系統 1539 0

面向對象編程時,都會遇到一個概念,類,python也有這個概念,下面我們通過代碼來深入了解下。

創建和使用類

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

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

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

self形參:類的方法與普通的函數只有一個特別的區別――它們必須有一個額外的第一個參數名稱,但是在調用這個方法的時候

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

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

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

使用類和實例

            
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()
 
運行結果:
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
          

繼承

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

現在我們有一個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
          

創建子類實例時,python首先給父類所有屬性賦值。

接下來我們創建新類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())
 
運行結果:
2016 Tesla Model S
          

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

super()是一個特殊函數,將父類和子類關聯起來。使得可調用子類的父類的方法__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()
 
運行結果:
2016 Tesla Model S
This car has a 70-kWh battery.
          

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

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

導入類

類似函數,類也可以保存為.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。字典的鍵值對沒有順序,但是這個類幾乎和字典相同,區別只在于記錄了鍵值對的順序。

            
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() + ".")
 
運行結果:
Jen's favorite language is Python.
Sarah's favorite language is C.
Edward's favorite language is Ruby.
Phil's favorite language is Python.
          


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 伊人国产在线播放 | 天天操天天舔天天干 | 深夜成人 | 成人国产午夜在线视频 | 天天射影院 | 一 级 黄 色蝶 片 | 亚洲欧美日韩国产精品 | 久青草中文字幕精品视频 | jiz欧美高清| 玖玖国产| 亚洲第一在线 | 日本三级中文字幕 | 国产成人精品18 | 欧美一欧美一区二三区性 | 国产剧情自拍 | 国产精品久久久久久久久kt | 免费看国产精品久久久久 | 国产一区二区不卡视频 | 中国一级毛片欧美一级毛片 | 久精品在线观看 | 久久精品视频在线 | 国产一区在线mmai | 欧美激情区 | 成人欧美一区二区三区 | 国内精品区一区二区三 | 免费一级毛片清高播放 | 欧美成人全部免费观看1314色 | 一区二区日韩 | 中文一级黄色片 | 欧美性色福利视频在线观看 | 欧美一区二区三区在线播放 | 国产片网址 | 色爱视频 | 国产欧美在线观看 | 亚洲精品久久麻豆蜜桃 | 夜色福利一区二区三区 | 日本不卡中文字幕 | 亚洲一区二区三区在线免费观看 | 亚州一级毛片在线 | 公主恋人ova | 欧美精品亚洲精品日韩 |