蒹葭苍苍,白露为霜。
所谓伊人,在水一方。

Python - 面向对象编程OOP-23


面向对象编程OOP

01 方法__repr__()和__str__()

 __repr__()方法类似java中的toString方法,用于反馈类的相关信息且可以自己定义,一般用于开发人员控制台调试

__rept__()和__str__()方法区别

在控制台交互测试时:

输入b返回__rept__()方法结果

输入print(b) 返回__str__()方法结果,如果没有定义__str__()方法  则用__rept__()结果代替__str__()方法结果

       __rept__()   打印信息一般用于开发人员测试

__str__()    打印信息一般用于用户查看

 

例子:Book类定义

 

 

控制台交互

 

 

 

 

 

02 全局成员变量

在Python里面定义了一个属于类的成员(相当于Java中的静态变量用static修饰内容)、不属于实例的成员如例子中的count,即可以用类名调用,也可以用类的实例调用。这样比较乱,我们尽量不要用实例名调用。

 

 

如果真的用实例名引用了全局变量,那么实例名引用的即book3.count的count其实是属于book3的,该count如果发生改变只会影响book3的count,不会影响类Book的count,这么做很容易混淆,所以不推荐

 

 

03 类函数——理解为静态函数

类函数定义

类里面的函数:一部分是带有self,一部分没有带self,其中有self的一般都与实例相关,没有self一般与类相关与实例无关,有三种方式创建这种类函数即与实例无关只与类有关的函数。

 

方式1  python2传承下来——该方式不方便使用,可以忽略

函数定义

 

 

函数调用

 

 

 

 

方式2——python3里面的静态函数可以用该种方式

该方式与方式1的区别就是,定义类函数时候不要加参数,参数为空,但是会有提示错误信息,注意提示是编辑器提示的不是python语法提示, 所以千万不要根据提示输入参数,一定不要写self  这样写的目的就是该函数不让实例来调用,实现类函数的意义

 

 

对于类函数static_method()方法,红色波浪线的提示如下

 

 

对于该提示信息的解释如下

 

 

 

 

 

方式3:用装饰器,也不建议加

加装饰器和不加的区别

加了就可以被实例调用了,但是不建议加,因为我们目的就是不让实例调用

       加的意义就是该函数本质上是与类相关的,不过加了装饰器之后既可以被类调用也可以被实例调用

在方法2的基础上,增加一个@staticmethod

 

 

函数调用

 

 

 

 

04 装饰器的简单讲解

例子:定义一个student类,用函数get_age()动态的获取学生的年龄

业务背景:下面定义了一个student,需要学生输入出生日期,但是现在想获得该学生的年龄,因为年龄是变化的,所以用函数get_age()动态的获取学生的年龄

定义一个student类,用函数get_age()动态的获取学生的年龄

 

 

结果

 

 

 

 

例子:刚才上面例子里面定义的是函数get_age(),下面例子里面用装饰器代替函数

       其实装饰器本身就是函数,只不过使用起来更像字段

 

 

用装饰器的好处,我们可以进一步过滤,比如说我们让这个年龄不允许赋值,不允许删除,下面用设置器和删除器实现了不允许赋值和不允许删除的功能,会抛出异常

 

 

调用赋值会抛异常

 

 

赞(0) 打赏
未经允许不得转载:酷居科技 » Python - 面向对象编程OOP-23

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

锦瑟无端五十弦,一弦一柱思华年

酷居科技联系我们

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

支付宝扫一扫打赏

微信扫一扫打赏