python中的装饰器、面向对象三大特征、运算符重载

装饰器简介

在类中对某个方法使用装饰器,该类的对象就可以像调用属性一样去调用该方法,给对应属性增加set和get方法。
实例:

class Employee:
    @property
    def salary(self):
        print('salary is ...')
emp = Employee()
emp.salary    # salary is ...

但是不可以进行赋值:

emp.salary = 1000    # AttributeError: can't set attribute

如果像进行赋值,我们会用set。

class Employee:
    def __init__(self,name,salary):
        self.__name = name
        self.__salary = salary
    @property
    def salary(self):
        return self.__salary
    @salary.setter   
    def salary(self,salary):
        self.__salary = salary

emp1 = Employee('123',213312)
print(emp1.salary)

面向对象的三大特征

在这里插入图片描述
下面这幅图片是继承的形象解释:
在这里插入图片描述
python支持多继承,继承的顺序是由写继承类的顺序,用mro()函数即可以看继承了哪些类。

class Animal:
    def say():
        print('Animal!')
        return
class EatMeat:
    pass
class Dog(EatMeat,Animal):
    def say():
        print('Dog!')
        return
class Cat(Animal):
    def say():
        print('Cat')
        return

dog = Dog()
cat = Cat()
print(Dog.mro())
# [<class '__main__.Dog'>, <class '__main__.EatMeat'>, <class '__main__.Animal'>, <class 'object'>]

多态:

class Animal:
    def say():
        print('Animal!')
        return
class EatMeat:
    pass
class Dog(EatMeat,Animal):
    def say(self,number):
        print('Dog!{0}'.format(number))
        return
class Cat(Animal):
    def say(self,number):
        print('Cat!{0}'.format(number))
        return

dog = Dog()
cat = Cat()
dog.say(1)   #Dog!1
cat.say(2)    #Cat2

运算符重载

python支持运算符的重载操作,所谓运算符重载,就是把python中自带的一些运算函数(由于每个类都继承Object类,而Object类中有这些运算函数)按照自己的意思进行运算。python中处处皆对象!

class MyOperator:
    def __init__(self,a,b):
        self.a = a
        self.b = b
    
    def __str__(self):
        return ('{0} plus {1} is {2}'.format(self.a,self.b,self.a+self.b))
    
    

op = MyOperator(2,3)
print(op)   #2 plus 3 is 5

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九久呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值