标签:成员变量 mamicode 获得 抛出异常 讲解 推荐 参数 dash 实例名
__repr__()方法类似java中的toString方法,用于反馈类的相关信息且可以自己定义,一般用于开发人员控制台调试
__rept__()和__str__()方法区别
在控制台交互测试时:
输入b返回__rept__()方法结果
输入print(b) 返回__str__()方法结果,如果没有定义__str__()方法 则用__rept__()结果代替__str__()方法结果
__rept__() 打印信息一般用于开发人员测试
__str__() 打印信息一般用于用户查看
例子:Book类定义
控制台交互
在Python里面定义了一个属于类的成员(相当于Java中的静态变量用static修饰内容)、不属于实例的成员如例子中的count,即可以用类名调用,也可以用类的实例调用。这样比较乱,我们尽量不要用实例名调用。
如果真的用实例名引用了全局变量,那么实例名引用的即book3.count的count其实是属于book3的,该count如果发生改变只会影响book3的count,不会影响类Book的count,这么做很容易混淆,所以不推荐
类函数定义
类里面的函数:一部分是带有self,一部分没有带self,其中有self的一般都与实例相关,没有self一般与类相关与实例无关,有三种方式创建这种类函数即与实例无关只与类有关的函数。
方式1 python2传承下来——该方式不方便使用,可以忽略
函数定义
函数调用
方式2——python3里面的静态函数可以用该种方式
该方式与方式1的区别就是,定义类函数时候不要加参数,参数为空,但是会有提示错误信息,注意提示是编辑器提示的不是python语法提示, 所以千万不要根据提示输入参数,一定不要写self 这样写的目的就是该函数不让实例来调用,实现类函数的意义
对于类函数static_method()方法,红色波浪线的提示如下
对于该提示信息的解释如下
方式3:用装饰器,也不建议加
加装饰器和不加的区别
加了就可以被实例调用了,但是不建议加,因为我们目的就是不让实例调用
加的意义就是该函数本质上是与类相关的,不过加了装饰器之后既可以被类调用也可以被实例调用
在方法2的基础上,增加一个@staticmethod
函数调用
例子:定义一个student类,用函数get_age()动态的获取学生的年龄
业务背景:下面定义了一个student,需要学生输入出生日期,但是现在想获得该学生的年龄,因为年龄是变化的,所以用函数get_age()动态的获取学生的年龄
定义一个student类,用函数get_age()动态的获取学生的年龄
结果
例子:刚才上面例子里面定义的是函数get_age(),下面例子里面用装饰器代替函数
其实装饰器本身就是函数,只不过使用起来更像字段
用装饰器的好处,我们可以进一步过滤,比如说我们让这个年龄不允许赋值,不允许删除,下面用设置器和删除器实现了不允许赋值和不允许删除的功能,会抛出异常
调用赋值会抛异常
标签:成员变量 mamicode 获得 抛出异常 讲解 推荐 参数 dash 实例名
原文地址:https://www.cnblogs.com/yijiexi/p/11140543.html