Python高级培训学习笔记2

方法的重写

子类继承了父类,可以获得父类的部分方法和成员变量。可是当父类的某个方法不适合于子类本身的特征时,可以进行覆盖重新定义父类当中的方法,即为方法的重写。

property

Python内置有三大装饰器:@staticmethod(静态方法)、@classmethod(类方法)、@property(描述符),其中静态方法就是定义在类里的函数,并没有非要定义的必要;类方法则是在调用类属性、传递类对象时使用;而@property则是一个非常好用的语法糖。@property最大的好处就是在类中把一个方法变成属性调用,起到既能检查属性,还能用属性的方式来访问该属性的作用。
语法糖指那些没有给计算机语言添加新功能,而只是对人类来说更“甜蜜”的语法。 语法糖往往给程序员提供了更实用的编码方式,有益于更好的编码风格,更易读。
实例需求是定义类Person,具有年龄和姓名,要求年龄必须等于18

class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.__age = 18

    @property
    def age(self):
        return self.__age

    def set_age(self, age): #定义函数来给self.__age赋值
        if age < 18:
            print('年龄必须大于18岁')
            return
        self.__age = age
        return self.__age
     
     xm = Person('xiaoming', 20)
     
print(xm.age)
print('----------')
xm.set_age(10)
print(xm.age)
print('----------')
xm.set_age(20)
print(xm.age)

运算符重载

定义: 让自定义类生成的对象(实例) 能够使用运算符进行操作
作用: 让实例像数学表达式一样进行运算符操作
实例:1、动态给类添加方法,具体是对猫的类中没有设置奔跑的方法,
在类外添加这个方法,并是打印显示
2、在类中对__pow__、operator模块的_lt_进行运算符重载,主要对的两个成绩进行平方运算、比较两个成绩

import operator#导入operator模块
class student(object):#定义student类
    def __init__(self,name,score):#定义构造方法
        self.name = name#初始化student类的name属性
        self.score = score#初始化student类的score属性
    def __pow__(self, power, modulo=None):#重载pow()方法
        print("平方后")#输出提示信息
        return pow(self.score,2)#返回经过pow()方法计算后的返回值

    def __lt__(self, other):#重载operator模块的lt()比较方法
        if (self.score > other.score):#判断语句:如果self的成绩大于other的成绩
            print("成绩最高的是:")#输出提示信息
            return self.name#返回self的name属性
        elif (self.score < other.score):#判断语句:如果self的成绩小于other的成绩
            print("成绩最高的是:")#输出提示信息
            return other.name#返回other的name属性
        else:#判断语句:如果self的成绩大于other的成绩
            return 0#返回0
student1 = student("张三",5)#初始化student类的一个对象并传入name,score等参数
student2 = student("李四",6)#初始化student类的一个对象并传入name,score等参数
score = pow(student1,2)#调用重载后的student类的pow()方法并赋值给score
print(student1.name,score)#输出相关信息
print(operator.lt(student1,student2))#调用重载后的student类operator模块的lt()比较方法并输出信息

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值