10. Python面向對象

Python從設計之初就已經是一門面向對象的語言,正因為如此,在Python中創建一個類和對象是很容易的。如果接觸過java語言同學應該都知道,Java面向對象三大特征是:封裝、繼承、多態。Python面向對象也有一些特征,接下來我們先來簡單的了解下面向對象的一些基本特征。

基本特征

  • 類(Class): 用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的實例。
  • 方法:類中定義的函數。
  • 實例化:創建一個類的實例,類的具體對象。
  • 繼承:即一個派生類(derived class)繼承基類(base class)的字段和方法。
  • 方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱為方法的重寫。

使用 class 語句來創建一個新類,class 之后為類的名稱并以冒號結尾,注意,類名開頭字母一般為大寫,如下代碼所示:

class 類名:class_suite  #類體,由類成員,方法,數據屬性組成。

創建一個類

class People(object):def __init__(self, name):self.name = namedef run(self):print('{}在跑步'.format(self.name))

注意:

  1. 第一種方法init()方法是一種特殊的方法,被稱為類的構造函數或初始化方法,當創建了這個類的實例時就會調用該方法。
  2. self 代表類的實例,self 在定義類的方法時是必須有的,雖然在調用時不必傳入相應的參數。

方法

上一篇我們學過函數,知道如何創建一個函數。但是如果在類中創建函數,我們不叫函數,我們稱作為方法。在創建People類的時候,其實已經構造了一個run方法。需要注意的是,類中的方法需要加一個self,如def run(self):

實例化

類實例化比較簡單,如下代碼所示:

class People(object):def __init__(self, name):self.name = namedef run(self):print('{}在跑步'.format(self.name))People1 = People("testDog") # 創建一個People對象
People1.run()

我們創建了一個People類,People類有一個構造函數,當我們創建一個People類的對象時需要傳入一個參數,創建的對象可以調用People類中的方法

繼承

面向對象的編程帶來的主要好處之一是代碼的重用,實現這種重用的方法之一是通過繼承機制。

繼承實例

class People(object):def __init__(self, name, age):self.name = nameself.age = agedef run(self):print('{}已經長大了,可以跑步'.format(self.name))def not_run(self):print('{}還沒長大,不可以跑步'.format(self.name))class Child(People):def eat(self):print("{}餓了,需要吃飯".format(self.name))testDog = Child("testDog", 5)
testDog.run()
testDog.eat()

上面代碼將輸出如下內容:

testDog已經長大了,可以跑步
testDog餓了,需要吃飯

我們創建了一個People類,我們每個人都有屬性,比如姓名,年齡。我們在People類中定義2個方法,滿足年齡可以跑步,不滿足年齡不可以跑步。我們創建一個子類Child類,子類Child繼承父類People時,我們可以直接使用父類的屬性和方法。為什么我們創建Child類對象時需要傳入2個參數?這是因為子類繼承父類時,如果父類有構造函數,那么我們也需要調用這個構造函數并進行傳參。

方法重寫

如果你的父類方法的功能不能滿足你的需求,你可以在子類重寫你父類的方法:

class People(object):def __init__(self, name):self.name = namedef run(self):print('{}在跑步'.format(self.name))class Student(People):def run(self):print('自從{}失戀后,{}就不再跑步了,把時間花在找女朋友身上'.format(self.name, self.name))testDog = Student("testDog")
testDog.run()

上面代碼將打印如下內容:

自從testDog失戀后,testDog就不再跑步了,把時間花在找女朋友身上

類的私有屬性與私有方法

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

類的方法
在類的內部,使用 def 關鍵字可以為類定義一個方法,與一般函數定義不同,類方法必須包含參數 self,且為第一個參數

類的私有方法
__private_method:兩個下劃線開頭,聲明該方法為私有方法,不能在類的外部調用。在類的內部調用 self.__private_methods

class People(object):__age = 22  # 私有變量name = "wangfei"  # 公開變量def __run(self):print("不喜歡讓別人看到自己跑步")def secret(self):print("調用私有屬性__age:{}".format(self.__age))self.__run()  # 調用私有方法wangfei = People()
print(wangfei.name)
wangfei.secret()

注意:我們可以在類中調用age和run,但是我們創建一個類對象時,我們不可以調用私有屬性和方法。

小結:當然面向對象內容遠不止筆者寫的這些,寫簡單的原因是如果一次性灌輸太多內容,可能會適得其反,造成看2行就出現頭暈目眩現象。這里只是給大家介紹個大概,讓大家對面向對象有一個簡單的了解。我們的主題還是Python實現接口測試,Python我們不會花非常多的時間去進行講解。關于Python語言的深入,建議大家多看些資料。

歡迎關注微信公眾號:軟件測試汪。軟件測試交流群:809111560

轉載于:https://blog.51cto.com/10895137/2354339

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536900.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536900.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536900.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql聚簇索引 和主鍵的區別_[MySQL] innoDB引擎的主鍵與聚簇索引

MysqL的innodb引擎本身存儲的形式就必須是聚簇索引的形式,在磁盤上樹狀存儲的,但是不一定是根據主鍵聚簇的,有三種情形:1. 有主鍵的情況下,主鍵就是聚簇索引2. 沒有主鍵的情況下,第一個非空null的唯一索引就是聚簇索引3. 如果上面都沒有,那么就是有一個隱藏的row-id作為聚簇索引…

前端頁面:一直報Cannot set property 'height' of undefined

1、出現錯誤的例子,只拷貝了項目中關鍵出現問題的部分 例子中明明寫了styleheight:16px這個屬性,但是為什么還說height未定義呢 通過打印發現:cks.each(function () { autoTextAreaHeight($(this)); });中的$(this)取出來…

mysql表在線轉成分區表_11g普通表在線轉換分區表

本帖最后由 燈和樹 于 2016-5-4 14:58 編輯由于業務系統數據量增大,對其用戶表在線完成分區表轉換過程,記錄如下,11g數據庫支持。創建過渡分區表根據USER_ID創建分區表CREATE TABLE SDP_SMECD.TEST_T_USER_ID(USER_ID NUMBER(13) …

tiger4444/rabbit4444后綴勒索病毒怎么刪除 能否百分百恢復

上海某客戶中了tiger4444的勒索病毒,找到我們后,一天內全部恢復完成。說了很多關于勒索病毒的事情,也提醒過大家,可總是有人疏忽,致使中招后,丟錢丟面子,還丟工作。 那么要怎樣預防呢與處理呢&a…

mysql遠程一會不用卡住_連接遠程MySQL數據庫項目啟動時,不報錯但是卡住不繼續啟動的,...

連接遠程MySQL數據庫項目啟動時,不報錯但是卡住不繼續啟動的,2018-03-12 17:08:52.532DEBUG[localhost-startStop-1]o.s.beans.factory.support.DefaultListableBeanFactory.doGetBean():251 -Returning cached instance of singleton bean ‘org.spring…

GPT-5、開源、更強的ChatGPT!

年終歲尾,正值圣誕節熱鬧氣氛的OpenAI寫下了2024年的發展清單。 OpenAI聯合創始人兼首席執行官Sam Altman在社交平臺公布,AGI(稍晚一些)、GPT-5、更好的語音模型、更高的費率限制; 更好的GPTs;更好的推理…

CentOS_7 安裝MySql5.7

2019獨角獸企業重金招聘Python工程師標準>>> 下載mysql的源 wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm 安裝yum庫 yum localinstall -y mysql57-community-release-el7-7.noarch.rpm 安裝MySQL yum install -y mysql-community-…

python查詢mysql decimal報錯_python讀取MySQL數據表時,使用ast模塊轉換decimal格式數據的坑...

概述MySQL中常用的數據格式有tinyint()、int()、float()、double()、decimal() 、varchar、enum()、datetime;小數格式中decimal比較常用,因為更加精確,這里就以decimal為例。從MySQL中讀取了一行數據,內容為:(17479, datetime.da…

性能測試總結(一)---基礎理論篇(轉載)

隨著軟件行業的快速發展,現代的軟件系統越來越復雜,功能越來越多,測試人員除了需要保證基本的功能測試質量,性能也隨越來越受到人們的關注。但是一提到性能測試,很多人就直接連想到Loadrunner。認為LR就等于性能測試&a…

java listen_JavaWeb之Filter、Listener

昨天和大家介紹了一下JSON的用法,其實JSON中主要是用來和數據庫交互數據的。今天給大家講解的是Filter和Listener的用法。一、Listenner監聽器1.1、定義Javaweb中的監聽器是用于監聽web常見對象HttpServletRequest,HttpSession,ServletContext。1.2、監聽器的作用監…

BFC的概念及作用

在了解什么是BFC之前,首先得明白什么是Box , Formatting Context (一個決定如何渲染文檔的容器)的概念 Box: CSS布局的基本單位 Box是 CSS 布局的對象和基本單位, 直觀點來說, 就是一個頁面是由很多個 Box組成的&#…

bitcount java_java-Long.bitCount()如何找到設置的位數?

讓我們以255為例.我們將這些位組合在一起.首先,我們從255開始,為0b1111.1111(二進制為8 1)第一行代碼是:i i - ((i > > > 1) & 0x5555555555555555L);這條線正在梳理每對1.由于我們有8個1,所以我們希望組合成對,并得到2,2,2,2之類的東西.由于它是二進…

Luogu P2463 [SDOI2008]Sandy的卡片

題目鏈接 \(Click\) \(Here\) 真的好麻煩啊。。事實證明,理解是理解,一定要認認真真把板子打牢,不然調鍋的時候真的會很痛苦。。(最好是八分鐘能無腦把\(SA\)碼對的程度\(QAQ\)) 這個題最開始我想的是\(RMQ\)遍歷每一個…

java log輸出到文件路徑_Java - 配置log4j的日志文件路徑 (附-獲取當前類路徑的多種方法)...

1 日志路徑帶來的痛點Java 項目中少不了要和log4j等日志框架打交道, 開發環境和生產環境下日志文件的輸出路徑總是不一致, 設置為絕對路徑的方式缺少了靈活性, 每次變更項目路徑都要修改文件, 目前想到的最佳實現方式是: 根據項目位置自動加載并配置文件路徑.本文借鑒 Tomcat 的…

常用數據結構

字典:即map,映射,通過key>value的方式直接查找與之對應的值,實現一般是hash表或二叉樹跳躍表:本質是鏈表,只不過將數據進行提取分層,將總數據置為底層,提取2、4、的倍數為第一二層…

java jasypt_Jasypt

軟件簡介Jasypt這個Java類包為開發人員提供一種簡單的方式來為項目增加加密功能,包括:密碼Digest認證,文本和對象加密,集成hibernate,SpringSecurity(Acegi)來增強密碼管理。Jasypt開發團隊推出了Java加密工具Jasypt 1…

ZABBIX監控JAVA日志文件

最近開發人員有一個需求,監控java程序的報錯日志,如日志中包含“ERROR”關鍵字的信息,就郵件告警,以下是具體實現方法。 一、創建模板以上是已經創建好的模板,名為“Template App Java logs”創建應用集二、創建監控項…

如何快速把音樂轉成MP3格式

身邊有這樣一群朋友經常搞音樂,仿佛生活的樂趣只有音樂,不能也能理解,誰沒有點自己的愛好呢?但是如果想要在茫茫人海中成為佼佼者,并不是這么容易的,但是我們要在速度上贏更多的人,所以寫了這篇…

new URI(zk_servers_1) 路徑包含下劃線無法獲取host的問題

spring cloud gateway使用zookeeper作為注冊中心調用其它服務的時候報了下面這個錯誤: ava.lang.NullPointerException: nullat io.netty.util.NetUtil.isValidIpV4Address(NetUtil.java:648) ~[netty-common-4.1.29.Final.jar:4.1.29.Final]at io.netty.util.NetUt…

java ee 值范圍_JAVAEE之內置對象和屬性范圍

內置對象和屬性范圍四種屬性范圍九個內置對象1.內置對象如果說想要使用一個對象,必須new 出來,但是在我們的jsp操作中,發現我們使用過的out,request對象沒有進行實例化,類似于這樣的對象,我們叫做jsp的內置對象&#x…