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

1001-高同学

发表文章数:265

热门标签

首页 » 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中的装饰器、面向对象三大特征、运算符重载
下面这幅图片是继承的形象解释:
python中的装饰器、面向对象三大特征、运算符重载
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

标签:

拜师教育学员文章:作者:1001-高同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《python中的装饰器、面向对象三大特征、运算符重载》 发布于2020-03-30

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录