
python面向对象1
七月 15, 2021
1623
1.面向对象编程中的一些基础函数
1.1__init__:
init是实例创建后被调用的,用以设置对象属性的初始值。依据需求看是否需要这个函数。init函数可对类进行初始化,且def之后不可以用return进行返回。
1.2__new__:
new是在实例创建前被调用的,创建一个实例然后返回该实例(例子中创建了string,返回一个新的str)。继承一个不可变类型但又想进行修改时使用。new函数提示开辟存储空间。new的参数会传给init方法,需要返回一个实例对象作为返回值。
1 |
|
CapStr继承了str,由于str不可修改,故用new方法进行修改。结果是
1 |
|
1.3__del__:
当实例化对象消失(copy的版本被删掉时不会被调用)的时候会调用del方法。(在pycharm里运行例子时,由于执行后就被删掉了所以既打印了init方法也打印了del方法,在idle环境下不存在这个问题)
1 |
|
2.算数运算与其重载
(重载就是重新定义算术运算)
2.1对象可进行的所有算术运算
算术运算
2.2重载
1 |
|
将原来的加法add方法重载为了减法。(若将加法定义为加法则会产生递归,超过了最大递归层次就会报错)
当当前运算不能正常进行时,自动调用其反运算(如add不行则会调用radd方法)
1 |
|
例中,a,b是同一类型,相加时自动调用__add__方法进行相加,而1与b不是同一类型,无法相加,会自动调用radd方法,即我们已经定义了的方法。(因为b属于class Nint,所以self参数是b,other参数是1)
类似还有增量赋值运算,形式为__iadd__
- 本文作者:Guo tianyu
- 本文链接:https://guotianyu-2020.github.io/2021/07/15/python%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A11/index.html
- 版权声明:本博客所有文章均采用 BY-NC-SA 许可协议,转载请注明出处!
查看评论