Python學習9 面向對象 類和對象

面向對象和面向過程

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

類和對象

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

類的設計

在這里插入圖片描述
在這里插入圖片描述

類的創建

在這里插入圖片描述
self:相當于當前對象;類似于Java中的this
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

類的創建和使用:

#類的命名:每個單詞首字母大寫
class Dog:#屬性name = 'dog'age = 11#方法def eat(self):print('eat rice!')dog = Dog()
print(dog.name,dog.age,sep='\n')
dog.eat()class Dog1(object):name = 'dog'age = 11
#構造方法def __init__(self, name, age):self.name = nameself.age = agedef mood(self):print('good')dog1 = Dog1('dog1', 8)
print(dog1.name,dog1.age,sep='\n')
dog1.mood()

基本語法:self

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

基本語法:slots

在這里插入圖片描述
案例:

#3
class Choose(object):#規定對象的屬性,不能隨意增加屬性__slots__ = ('name','age','position')def __init__(self,name,age,postion):self.name=nameself.age=ageself.position=postiondef fun(self):print('just fun,don\'t think!')def printName(self):print('name={}'.format(self.name))
c=Choose('c',90,'position')
c.fun()
c.printName()class Choose(object):def __init__(self,name,age,postion):self.name=nameself.age=ageself.position=postion
c=Choose('c',90,'position')
c.city='add'#不存在,就添加屬性;存在,就修改屬性值
print(c.city)

魔術方法

在這里插入圖片描述

魔術方法:__init__方法 & __del__方法

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

魔術方法:__str__方法

在這里插入圖片描述
在這里插入圖片描述

魔術方法: __call__方法

在這里插入圖片描述

魔術方法: __eq__方法

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

魔術方法案例


# 4 魔術方法:自動執行
class Magic(object):__slots__ = ('name', 'age')# 創建時調用def __init__(self, name, age):self.name = nameself.age = ageprint('init class!:' + self.name)# 在銷毀對象時調用def __del__(self):print('delete class!:' + self.name)# 在默認輸出對象時調用,默認打印當前對象地址;重寫后打印信息def __str__(self):return 'this is str:' + self.name# 在m1()時調用def __call__(self, *args, **kwargs):print('call class:' + self.name)# 在==比較對象時調用def __eq__(self, other):return self.name == other.name and self.age == other.agem1 = Magic('m1', 1)
m2 = Magic('m2', 2)
# 調用str
print(m1)
print(m2)
# 調用call
m1()
m2()
# 比較兩個對象的內存地址
print(m1 is m2)
# 調用eq進行比較
print(m1 == m2)#輸出
#init class!:m1
# init class!:m2
# this is str:m1
# this is str:m2
# call class:m1
# call class:m2
# False
# False
# delete class!:m1
# delete class!:m2

其他魔術方法總結

在這里插入圖片描述
在這里插入圖片描述

練習1-擺放家具

在這里插入圖片描述
在這里插入圖片描述
代碼

#author:dq
#project:PythonProject
#date:2021年10月18日
#function:class
# 編程題:【擺放家具】需求:
# 1 房子(House)有戶型、總面積、剩余面積(=總面積-家具面積) 和 家具名稱列表 屬性。
#     注:新房子沒有任何家具
# 2  家具(HouseItem)有 名字 和 占地面積 屬性,其中
#                         席夢思(bed)占地 4 平米
#                         衣柜(chest)占地 2 平米
#                         餐桌(table)占地 1.5 平米
# 3  將以上三件家具添加到房子中;
# 4  判斷 家具的面積 是否 超過剩余面積,如果超過,提示不能添加這件家具;
# 5 打印房子時,要求輸出:戶型、總面積、剩余面積、家具名稱列表class House(object):__slots__ = ('style', 'allSzie', 'restSize', 'furnituresList')def __init__(self, style, allSzie, restSize, furnitureList):self.style = styleself.allSzie = allSzieself.restSize = restSizeself.furnituresList = furnitureListdef __str__(self):#print('style=' + self.style + '\t' + 'allSzie=' + str(self.allSzie) + '\t' + 'restSize=' + str(self.restSize)+'\t'+str(self.furnituresList) + '\n')#return 'style=' + self.style + '\t' + 'allSzie=' + str(self.allSzie) + '\t' + 'restSize=' + str(self.restSize)+'\t'+str(self.furnituresList) + '\n'return 'style=' + self.style + '\t' + 'allSzie=' + str(self.allSzie) + '\t' + 'restSize=' + str(self.restSize)+'\t'+' '.join(self.furnituresList) + '\n'def add_furniture(self, item):if(item.area<=self.restSize):self.restSize-=item.areaself.furnituresList.append(item.name)print('可以添加'+item.name+'家具!\n')else:print('不可以添加'+item.name+'家具!\n')class HouseItem(object):__slots__ = ('name', 'area')def __init__(self, name, area):self.name = nameself.area = areadef __str__(self):return 'name='+self.name+'\t'+'area='+str(self.area)+'\n'bed=HouseItem('席夢思',4)
chest=HouseItem('衣柜',2)
table=HouseItem('餐桌',1.5)
print(bed)
print(chest)
print(table)
h=House('別墅',10,10,[])
h.add_furniture(bed)
h.add_furniture(chest)
h.add_furniture(table)
print(h)

練習2-計算點是否在矩形內

在這里插入圖片描述

#author:dq
#project:PythonProject
#date:2021年10月18日
#function:
# 需求:設計兩個類:
# 一個點Point類,屬性包括 x 和 y 坐標。
# 一個矩形Rectangle類,屬性有左上角(top_left)和 右下角(bottom_right)的坐標。
#     方法:1.計算矩形的面積(get_area);2.判斷點是否在矩形內(is_inside)。
# 主程序:
# 實例化一個點對象,一個正方形對象,輸出矩形的面積,輸出點是否在矩形內class Point(object):__slots__ = ('x','y')def __init__(self,x,y):self.x=xself.y=ydef __str__(self):return 'x='+self.x+'\t'+'y='+self.y+'\n'
class  Rectangle(object):__slots__ = ('x1', 'y1','x2','y2')def __init__(self, x1, y1,x2,y2):self.x1 = x1self.y1 = y1self.x2 = x2self.y2 = y2def __str__(self):return 'area='+ str(self.area())def area(self):return (self.x2-self.x1)*(self.y2-self.y1)def inside(self,point):if((self.x1<point.x<self.x2) and(self.y1<point.y<self.y2)):return Trueelse:return False
point=Point(1,4)
r=Rectangle(0,0,2,7)
print(r)
print(r.inside(point))

練習3-計算器類

設計一個計算器類,可以進行加、減、乘、除計算。

# author:dq
# project:PythonProject
# date:2021年10月18日
# function:設計一個計算器類,可以進行加、減、乘、除計算。class Count(object):__slots__ = ('x', 'pos', 'y')def __init__(self, x, pos, y):self.x = xself.pos = posself.y = ydef decide(self):if (self.pos == '+'):return self.add()elif (self.pos == '-'):return self.sub()elif (self.pos == '*'):return self.mul()elif (self.pos == '/'):return self.truediv()def add(self):return self.x + self.ydef sub(self):return self.x - self.ydef mul(self):return self.x * self.ydef truediv(self):return self.x / self.ydef __str__(self):return str(self.x) + self.pos + str(self.y) + "=" + str(self.decide())x=int(input('請輸入x:'))
pos=input('請輸入pos:')
y=int(input('請輸入y:'))
c = Count(x, pos, y)
print(c)

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

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

相關文章

刷機提示圖像和設備不匹配_安卓5.0升級失敗如何解決 安卓5.0刷機失敗解決方法介紹【教程】...

安卓5.0升級失敗怎么辦?安卓5.0刷機失敗急救方法?谷歌發布了適用于Nexus系列的Android 5.0系統&#xff0c;但是&#xff0c;刷安卓5.0系統時遇到system.img系統鏡像找不到的錯誤提示是怎么回事?谷歌終于發布了適用于Nexus系列的Android 5.0底包和OTA推送&#xff0c;不過第…

華為模擬器eNSP1

eNSP介紹 網絡仿真工具平臺 路由器AR

postman 不安全網站_接口工具分析(apipost、jmeter、postman)

一、接口都有哪些類型&#xff1f;接口一般分為兩種&#xff1a;1.程序內部的接口 2.系統對外的接口系統對外的接口&#xff1a;比如你要從別的網站或服務器上獲取資源或信息&#xff0c;別人肯定不會把 數據庫共享給你&#xff0c;他只能給你提供一個他們寫好的方法來獲取數據…

HPPTS如何保證通信雙方的安全性

HTTPS原理和通信流程 - 知乎

java-web前端 javascript

介紹 JavaScript是Web中一種功能強大的腳本語言&#xff0c;被設計為向 HTML 頁面增加交互性&#xff0c;常用來為網頁添加各式各樣的動態功能&#xff0c;它不需要進行編譯&#xff0c;直接嵌入在HTML頁面中&#xff0c;就可以把靜態的頁面轉變成支持用戶交互并響應事件的動態…

C++筆試記錄 2021年9月16日

1&#xff0c;函數模板缺省情況下都是內聯的 需要進一步的學習 父類析構函數為非虛函數&#xff0c;子類為虛函數_zhl11a的專欄-CSDN博客_父類的析構函數是非虛的父類析構函數為非虛函數&#xff0c;子類為虛函數 delete子類指針(指向這個子類對象)會調用父類的析構函數 #i…

clientdataset 過濾 in_江門馬弗過濾科技有限公司

點擊藍字關注我們江門馬弗過濾科技有限公司成立于 2020 年&#xff0c;公司位于江門市江海區高新技術開發區&#xff0c;注冊資金 500 萬&#xff0c;工廠面積約 5185 平方米。我們致力于重型汽車空氣過濾器產品的專業制造與研發,為商用車輛及工程車輛等提供過濾系統解決方案的…

java-web前端 CSS

CSS介紹 CSS 指的是層疊樣式表* (Cascading Style Sheets), 描述了如何在屏幕、紙張或其他媒體上顯示 HTML 元素,節省了大量工作&#xff0c;并且可以同時控制多張網頁的布局 外部樣式表存儲在 CSS 文件中 CSS&#xff1a;也稱級聯樣式表。 CSS語法 選擇器指向您需要設置樣式…

c++網吧計費系統_云游戲火了,中國14萬家網吧走向何處?

日前微軟與谷歌兩大科技巨頭紛紛宣布其在云游戲布局的最新進展&#xff0c;一時間云游戲成為游戲圈的熱門詞匯。作為云游戲一大落地場景&#xff0c;網吧這一發展了二十余年的產業&#xff0c;又將迎來新的變量。一些觀點認為云游戲將大幅降低網吧的硬件成本&#xff0c;解決網…

undefined reference to `std::ios_base::Init::Init() 解決

undefined reference to std::ios_base::Init::Init() 解決 &#xff08;一&#xff09;gcc 編譯C程序是提示錯誤undefined reference to std::ios_base::Init::Init() 的解決方法 在linux下編譯c 程序要使用g 編譯器,如果你要是使用gcc編譯器就會有上面的報錯信息,只要在在g…

Python學習10 內置屬性 對象屬性 類屬性 私有屬性 私有方法 對象方法 類方法 靜態方法

內置屬性 創建類時系統自動創建的屬性 # 內置屬性&#xff1a;dir(對象)&#xff0c;列出所有的內置屬性 class Person(object):Person類1# Person類2__slots__ (name, age)def __init__(self, name, age):self.name nameself.age agedef eat(self):print("eat!!!…

fastreport 上一行_創業天下全球總裁袁麗軍一行蒞臨平川區 電商農特產扶貧展館考察指導工作...

6 月12 日&#xff0c;創業天下全球總裁袁麗軍帶領考察組一行來平川區電商農特產扶貧展館指導電商工作。區商務局局長馮月莉、區電子商務服務中心主任李守虎陪同考察。考察中&#xff0c;袁麗軍一行就我區電商農特產扶貧展館工作開展情況、平臺運營情況、物流配送、產品商標注冊…

滴滴筆試準備 項目分配利益最大化

思路&#xff1a;求取每一列的最大數值之和 #include <iostream> #include <vector>int row,column;int main(){std::cin >> row >> column;std::vector<std::vector<int>>input(row, std::vector<int>(column, 0));for (int i 0; …

Java web后端5 JSP技術

JSP概述 HTML代碼與Java代碼共同存在 瀏覽器中顯示 啟動Tomcat 瀏覽器訪問&#xff1a;http://localhost:8083/JSPWeb_war_exploded/hello.jsp <%--Created by IntelliJ IDEA.User: DQDate: 2021/10/20Time: 9:30To change this template use File | Settings | File T…

listview bcb 行的顏色_文明交通安全行手抄報簡單又漂亮

在生活中我們要特別注意交通安全&#xff0c;因為生命是寶貴的。全國交通安全日將至&#xff0c;下面小編給大家準備了文明交通安全行手抄報&#xff0c;一起來學習交通安全知識吧!文明交通安全行手抄報交通安全常識出家門&#xff0c;路邊走&#xff0c;交通法規要遵守;過馬路…

小米C++開發 面試 準備階段和部分真題

真題 C 函數指針和指針函數的區別 o(╥﹏╥)o堆和棧的區別函數重載&#xff1f;為什么返回值不可以區分函數重載&#xff1f;o(╥﹏╥)o封裝、繼承和多態的定義&#xff0c;自己描述一下這三者的區別和聯系。多態的構成(應該是想聽虛函數&#xff0c;當時沒有想到 o(╥﹏╥…

電腦屏保海底世界_水下棲息地:人類能否在海洋中居住?真的有人住在海底嗎?...

慧緣開運講壇&#xff1a;真的有人住在海底嗎&#xff1f;對于這個問題&#xff0c;你肯定首先會想到美人魚&#xff0c;對于未知的事物&#xff0c;我們并沒有證據證明它們的存在。人類如何居住海底呢&#xff1f;那首先需要一個密閉的生態環境供進入海底的人生活。我們可以稱…

中科大 計算機網絡16 P2P應用

P2P架構 每一個節點即是客戶端又是服務器&#xff0c;分布式的&#xff0c;可靠性高 釘釘&#xff0c;QQ打電話采用P2P的方式 文件分發&#xff1a;C/S和P2P 上載&#xff1a;客戶端向服務器發送文件 下載&#xff1a;客戶端從服務器拉取文件 C/S&#xff1a; 所有的客戶端…

密碼學專題 SSL協議

SSL協議為不同的高層協議(http、FTP)提供安全服務SSL握手協議、SSL修改密文協議和SSL告警協議的目的是為了 管理 和SSL相關的密文交換連接&#xff1a;兩臺主機之間提供特定類型的數據傳輸&#xff0c;是點對點的關系&#xff1b;連接是短暫的&#xff0c;每一個連接都會和一個…

1709 ltsb 內存占用_深挖Python的內存管理機制:垃圾回收機制

Python 程序在運行時&#xff0c;需要在內存中開辟出一塊空間&#xff0c;用于存放運行時產生的臨時變量&#xff0c;計算完成后&#xff0c;再將結果輸出到永久性存儲器中。但是當數據量過大&#xff0c;或者內存空間管理不善&#xff0c;就很容易出現內存溢出的情況&#xff…