python DAY_7(1)面向对象的编程

学习内容:
面向对象的编程,装饰器的应用,不同位置变量的应用。
Tips:我们在创建类的时候,定义一个函数,变量一般都会默认含有self的字样,这里包含self表示与实例有关,如果要与实例无关,我们将它写在类里面即可。
重点:
1.装饰器的应用,直接通过代码简介
import datatime
#导入datatime包
@property
#装饰器
def age(self):
#定义一个名为age的函数
return datatime.data.today().year-self.birthday.year
#返回年龄
这里简单说明一下,datetime包里面通过date函数可以调用今日的时间(年,月,日),self.birthday,从TIPS可知他是与实例有关的变量,输入的格式也是调用datatime.data(年,月,日)的格式,最后面.year就表示调用年份,由与python里面的变量时变化的,所以不用严格定义其类型,就能自动匹配操作

@age.setter
#@必不可少,因为使用了装饰器,age就成了class一面的一个属性,可以随时调用,setter是自带的设置器。
def age(self,value)
raise Attributeerror(“禁止赋值”)
#完成了禁止赋值语句的编写,在后续使用age时,如果改变年龄就会改变
@age.deleter
def age(self)
raise Attributeerror(“禁止删除年龄”)
#我们在完成之后,在类之外就可以进行调用了
print(s.age)#s为先前定义的一个对象
那么就会输出s的age
如果s.age=20
print(s.age)那么就会报错

在这里简介一下del()函数,这是个全局函数,可以随时使用。
我们删除s的名字
del(s.name)#s的名字会被删掉
但是由于age使用了装饰器,我们在age.delete下写过,无法删除age内容
所以del(s.age)运行后也会报错。
2.变量的使用
以昨天的健身为例,我们每创建一条消息,那么对应的记录数就会加上一个,怎么实现呢?我们可以在类里面定义一个count,在init里面写下,每调用一次init函数,count就会加一次。
或者没创建一个记录,就调用Fitness的count,令其加1.
对于第二种方法
在这里插入图片描述

显然代码太繁琐。而且不是很好的反应面向对象的思想
对于第一种,由于count在Fitness的类里面,所以在init()下必须调用
及Fitness.count才能使用
!

在这里插入图片描述

较为简便。
在FITNESS类的基础上,我在实现装饰器的使用。

输出年龄
在这里插入图片描述

删除年龄报错
在这里插入图片描述
更改年龄,我发现如果我们更该man2.age=20,
那么在@age.setter下def age(self,value)必须要有一个变量来接受man2.age=20的内容,不然会报错
在这里插入图片描述

加上之后可以运行
在这里插入图片描述

最后附上两个常见用法,在搜寻不到特定内容的某个属性时,可以使用如下代码(借鉴别人的代码)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值