task07 类与对象、魔方方法
类与对象
1、以下类定义中哪些是类属性,哪些是实例属性?
类属性:类里面方法外面定义的变量称为类属性。类属性所属于类对象并且多个实例对象之间共享同一个类属性,说白了就是类属性所有的通过该类实例化的对象都能共享。
实例属性:实例属性和具体的某个实例对象有关系,并且一个实例对象和另外一个实例对象是不共享属性的,说白了实例属性只能在自己的对象里面使用,其他的对象不能直接使用,因为self
是谁调用,它的值就属于该对象。
2、怎么定义私有⽅法?
在 Python 中定义私有变量只需要在变量名或函数名前加上“__”两个下划线,那么这个函数或变量就会为私有的了。
3、尝试执行以下代码,并解释错误原因:
class C:def myFun():print('Hello!')c = C()c.myFun()
创建实例对象时不应该在类定义中;类中的每个方法都必须至少有一个参数self,且必须是方法的第一个形参,self参数代表当前对象,即def myFun(self)。
class C:def myFun(self):print('Hello!')c = C()
c.myFun()
4、按照以下要求定义一个游乐园门票的类,并尝试计算2个成人 + 1个小孩平日票价。
要求:
- 平日票价100元
- 周末票价为平日的120 %
- 儿童票半价
class Ticket():usual_ticket = 100weekend = 120def calculate_usual(self, adult, children):money = self.usual_ticket * adult + self.usual_ticket // 2 * childrenreturn moneydef calculate_weekend(self, adult, children):money = self.weekend * adult + self.weekend // 2 * childrenreturn moneyt = Ticket()
print(t.calculate_usual(2, 1))
魔方方法
1、上面提到了许多魔法方法,如__new__
,__init__
, __str__
,__rstr__
,__getitem__
,__setitem__
等等,请总结它们各自的使用方法。
__init__在类实例化时会自动调用。
new__对当前类进行了实例化,并将实例返回,传给__init__的self。但是,执行了__new,并不一定会进入__init,只有__new__返回了,当前类cls的实例,当前类的__init__才会进入。
__str__在打印对象,用%s格式化以及强制转换数据类型时触发。
__rstr__在没有实现__str__以及使用%r格式化的时候触发。
__getitem__定义获取容器中元素的行为,相当于self[key]。
__setitem__定义设置容器中指定元素的行为,相当于self[key] = value。
2、利用python做一个简单的定时器类
要求:
- 定制一个计时器的类。
start
和stop
方法代表启动计时和停止计时。- 假设计时器对象
t1
,print(t1)
和直接调用t1
均显示结果。 - 当计时器未启动或已经停止计时时,调用
stop
方法会给予温馨的提示。 - 两个计时器对象可以进行相加:
t1+t2
。 - 只能使用提供的有限资源完成。
import timeclass Timer:def __init__(self):print('未开始计时')self.info = '未开始计时'self.start_time = Noneself.sec = Nonedef start(self):print('开始计时')self.start_time = time.time()self.info = '正在计时'def stop(self):try:self.sec = time.time() - self.start_timeexcept:print('未开始计时或计时已结束')else:print('停止计时')self.info = '已计时:%f s' % self.secdef __str__(self):return self.infodef __add__(self, others):return '共计时 %f s' % (self.sec + others.sec)t1 = Timer()
t1.stop()
t1.start()
time.sleep(1)
t1.stop()
print(t1)
t2 = Timer()
t2.start()
time.sleep(2)
t2.stop()
print(t1+t2)
#未开始计时
#未开始计时或计时已结束
#开始计时
#停止计时
#已计时:1.002307 s
#未开始计时
#开始计时
#停止计时
#共计时 3.002707 s
task07 类与对象、魔方方法相关推荐
- python如何对一个属性或方法进行封装_python 类、对象、方法、属性
在python中,一个对象的特征也称为属性(attribute).它所具有的行为也称为方法(method) 结论:对象=属性+方法 在python中,把具有相同属性和方法的对象归为一个类(class) ...
- String类的对象的方法 格式小结 java 1202
String类的对象的方法 格式小结 java 1202 定义一个字符串 两种方法可以定义字符串 String 字符串对象 = "内容" String 字符串对象 = new St ...
- java猫抓老鼠_用猫抓老鼠的实例理解java中面向对象的编程与类和对象以及方法的概念...
今天看到马士兵讲的关于面向对象编程的思路,用了一个猫抓老鼠的例子,我觉得这个例子非常形象,于是写在这里,方便学习理解和以后查看 class cat{ //声明一个类–"猫" int ...
- Java_面向对象基础(类、对象、方法和构造函数)
Java的面向对象基础(类.对象.方法和构造函数) 面向对象的基本概念 面向对象的设计思想 什么是类 什么是对象 类的定义 设计面向对象的例子 步骤一:设计动物这个类 步骤二:创建具体的动物 步骤三: ...
- 八、Java面向对象编程(类、对象、方法、重载、可变参数、作用域、构造器、this本质)
文章目录 Java面向对象编程(类.对象.方法.重载.可变参数.作用域.构造器.this本质) 一.类与对象 1. 类与对象的引出 2. 使用现有技术解决 3. 现有技术解决的缺点分析 4. 类与对象 ...
- python类、对象、方法、属性之类与对象笔记
为什么80%的码农都做不了架构师?>>> python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... ...
- c#之旅--第六天(类,对象,方法)
面向对象和类 类:类是一组具有相同数据结构和相同操作的对象的集合.类是对一系列具有相同性质的对象的抽象,是对对象共同特征的描述. 对象:对象可以是现实生活中的一个物理对象,还可以是某一类概念实体的实例 ...
- java 对象 方法_java——类、对象、方法
一.类 1.Java语言把一组对象中相同属性和方法抽象到一个Java源文件就形成了类. 一个java文件可以有多个类,但是每一个类都会生成一个class字节码文件. 如果class 前加public ...
- python类和对象介绍_python中的类,对象,方法,属性等介绍
注:这篇文章写得很好.加底纹的是我自己的理解 python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性( ...
最新文章
- C语言register关键字—最快的关键字
- 用iPhone给林徽因拍照会是啥样?这款“穿越相机”把老照片换成现代风
- 抄2gua一篇文章提醒自己
- 我的vim 配置——nerdtree、ack vim、vim sneak
- vmware上给根分区增加空间以及创建逻辑卷
- leetcode 64. 最小路径和
- learn Linux sed command
- 深入浅出理解锁之—— AbstractQueuedSynchronizer
- JEPLUS表格组件数据平铺——JEPLUS软件快速开发平台
- docker镜像制作(二)——构建企业镜像LAMP+BBS
- MVC是架构模式,而不是设计模式
- Linux —— 常用命令集合
- .c和.h文件的区别(转载)
- 室内定位---UWB测距及定位原理
- 从头开始学JavaScript (十三)——Date类型
- 第二次 HDOJ 1003
- OBS 录制黑屏的解决方法
- 51单片机学习笔记0 -- 仿真软件安装(Protues8.0)
- 华为通用软件工程师面经
- 【问题整理】计算机相关