30.面向对象中常用内建函数与重载函数
Posted zhangan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了30.面向对象中常用内建函数与重载函数相关的知识,希望对你有一定的参考价值。
内建函数:类中特殊功能
- __init__(self): ###为实例对象赋值
2,数据初始化函数
3,在实例化时,自动调用
4,init函数只能返回None ###TypeError: __init__() should return None, not ‘int‘
class A(object): def __init__(self): #init自动调用 print(‘我是init‘) self.num = 1 a = A()运行结果:
我是init
- __new__(self): ###创建实例对象,简称构造器
1,在init函数之前调用,自动调用
2, 初始化实例内存空间,创建一个壳子
3, 必须要返回一个实例对象
class A(object): def __new__(self): #创建实例对象,构造器 new函数是可以不写的,面向对象默认自带 print(‘我是new‘) return super(A,self).__new__(self) #new函数必须要返回一个实例对象 def __init__(self): #为实例对象赋值 print(‘我是init‘) self.num = 1 a = A()运行结果:
我是new 我是init
-
__del__(self): ###拆除释放掉骨架,简称析构器 (一般来说可以不定义,因为内存便宜了,优秀的程序员想要写的更好就可以用这个函数释放一下内存,就算不写也不会影响什么,除非你的数据比较大几百兆甚至更多)
1,在对象释放的时候 自动调用
2,用来释放数据内存
class A(object): def __new__(self): #创建实例对象,构造器 默认是可以不写的 print(‘我是new‘) return super(A,self).__new__(self) #new函数必须要返回一个实例对象 def __init__(self): #为实例对象赋值 print(‘我是init‘) self.num = 1 def __del__(self): del self.num print(‘我是del,数据内存释放完毕‘) a = A()运行结果:
我是new 我是init 我是del,数据内存释放
- __slots__ = (‘name‘,‘age‘)
1,定义当前的实例属性可以有那些,如果不是定义的就会报错:AttributeError: ‘A‘ object has no attribute ‘name1‘
class A(object): def __init__(self): #为实例对象赋值 self.age = 20 self.name = ‘小红‘ print(‘我是%s,今年%s岁‘ % (self.name,self.age)) __slots__ = (‘age‘,‘name‘) a = A()运行结果:
我是小红,今年20岁
重载这些内建函数:运算符内建函数
-
继承重写:运算符 (记住要时刻要用dir函数查看内建函数,help查看函数的帮助文档)
1, +:__add__
2, -:__sub__
3, *:__mul__
4, /:__floordiv__
5, == : __eq__
6, > : __gt__
7,>= :__ge__
8,< : __lt__
9,<= : __le__
-
继承重写:操作符
1, []:getitem
以上是关于30.面向对象中常用内建函数与重载函数的主要内容,如果未能解决你的问题,请参考以下文章
面向对象程序设计-C++_课时30运算符重载——基本规则_课时31运算符重载——原型_课时32运算符重载——赋值_课时33运算符重载——类型转换