# 面向對象編程 根據類來創建對象稱為實例化。這裡只過一下大概的面向對象的內容,不做細講。可以直接查閱資料。https://www.runoob.com/python3/python3-class.html ## 創建和使用類及實例 給出一個類的使用例子: ```python class Dog: ...
面向對象編程
根據類來創建對象稱為實例化。這裡只過一下大概的面向對象的內容,不做細講。可以直接查閱資料。https://www.runoob.com/python3/python3-class.html
創建和使用類及實例
給出一個類的使用例子:
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def sit(self):
printf(f"{self.name} is now sittig.")
def roll_over(self)
print(f"{self.name} rolled over!")
my_dog = Dog("willie", 6) #實例化一個對象
註意:__init__()
是一個特殊的方法,當類創建一個新的實例時,會自動運行該方法。類似於C++里的構造函數。而self是指向實例本身的引用。每個函數預設第一個參數都是self。每個與實例相關聯的方法調用都自動傳遞實參self,它是一個指向實例本身的引用,讓實例能夠訪問類中的屬性和方法。以 self 為首碼的變數可供類中的所有方法使用,可以通過類的任何實例來訪問。
繼承
在既有類的基礎上編寫新類時,通常要調用父類方法__init()__
。這將初始化在父類__init()__
方法中定義的所有屬性,從而讓子類包含這些屬性。給出一個例子:
動物基類代碼:
class Animal:
def __init__(self, ptype, sound, color):
self.ptype = ptype
self.sound = sound
self.color = color
def get_sound(self):
print(f"這隻{self.ptype}的叫聲是{self.sound}")
def get_color(self):
print(f"這隻{self.ptype}的顏色是{self.color}")
狗派生類實現代碼:
class Dog(Animal): #子類繼承父類,是需要將父類放在子類括弧中
def __init__(self, ptype, sound, color):
#初始化父類屬性
super().__init__(ptype, sound, color) #特殊方法,可以在子類中調用父類方法
def get_sound(self):
print(f"這隻{self.ptype}它竟然不叫")
my_tesla = Dog("狗", "汪汪汪", "黑色")
my_tesla.get_color()
my_tesla.get_sound()
對於父類的方法,只要它不符合子類模擬的實物的行為,都可以進行重寫。為此,可在子類中定義一個與要重寫的父類方法同名的方法。這樣,Python將不會考慮這個父類方法,而只關註在子類中定義的相應的方法。
導入模塊
在 python 用 import 或者 from...import 來導入相應的模塊。
將整個模塊(Allmodule)導入,格式為: import Allmodule
從某個模塊中導入某個函數,格式為: from Allmodule import somefunction
從某個模塊中導入多個函數,格式為: from Allmodule import firstfunc, secondfunc, thirdfunc
將某個模塊中的全部函數導入,格式為: from Allmodule import *
使用別名導入函數,格式為: from Allmodule import firstfunc as Func
Python標準庫
文件讀取數據
讀取整個文件
先給出一個例子,對這個例子進行解釋分析。讀取一個文件,內容是圓周率的後30位的數值,且在小數點後每10位處換行。
with open("pi_digits.txt") as file_object:
contents = file_object.read()
print(contents)
#文件內容
/*
3.1415926535
8979323846
2643383279
*/
open()
在當前目錄下查找指定文件。返回一個對象,用as對這個返回值起別名為 file_object- 關鍵字 with 在不再需要訪問文件後將其文件對象進行關閉
- 文件對象調用
read()
方法讀取文件內容,當到達文件末尾時返回一個空字元串,而將這個空字元串顯示出來就是一個空行
註意:可以調用 open()
和 close()
來打開和關閉文件,但這樣做時,如果程式存在bug導致方法 close()
未執行,文件將不會關閉。所以使用上面的結構讀取文件時,Python會在合適的時候自動將其關閉。
刪除多餘的空行可以使用 rstrip()
contents.rstrip()
對了open函數里既可以填寫絕對路徑和相對路徑,這點就不說了,簡單。不懂上網查。
逐行讀取文件
filename = "pi_digits.txt"
with open(filename) as file_object:
for line in file_object:
print(line.rstrip())
註意:文件中每一行的末尾都是有一個換行符的。因此要對讀取的每一行字元串內容進行刪除多餘的空白行,使用 rstrip()
創建一個包含文件各行內容的列表:
readlines()
從文件中讀取每一行,並將其存儲在一個列表中
filename = "pi_digits.txt"
with open(filename) as file_object:
lines = file_object.readlines()
for line in lines:
print(line.rstirp())
使用文件內容組成完整字元串:
filename = "pi_digits.txt"
with open(filename) as file_object:
lines = file_object.readlines()
pi_string = ""
for line in lines:
pi_string += line.rstrip()
print(pi_string) # 結果為 3.1415926535 8979323846 2643383279
print(len(pi_string)) # 32
由於pi_string指向的字元串包含原來位於每行左邊的空格,為刪除這些空格,可使用 strip()
讀取文本文件時,Python將其中的所有文本都解讀為字元串。