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.mzph.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;他只能给你提供一个他们写好的方法来获取数据…

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;解决网…

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…

Python学习11 继承

面向对象三大特征 继承 Python多继承&#xff0c;默认从左到右依次继承&#xff0c;使用&#xff0c;隔开 默认继承object类 #继承了object类&#xff0c;可以省略 class m:def eat(self):print(m)class m2(object):def eat(self):print(m)继承的注意事项 class A(object):de…

qq浏览器网页翻译_iOS 14中直接在Safari浏览器中翻译网页的方法!

在 iOS 14 中&#xff0c;苹果推出了「翻译」的应用程序&#xff0c;可以实时翻译数种不同的语言。同时&#xff0c;Safari 浏览器也新增了翻译功能。借助新的网页翻译功能&#xff0c;Safari 会根据设备的首选语言列表自动检测书否需要翻译访问的网页内容&#xff0c;以便继续…