30.面向对象中常用内建函数与重载函数

Posted zhangan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了30.面向对象中常用内建函数与重载函数相关的知识,希望对你有一定的参考价值。

 内建函数:类中特殊功能
  • __init__(self):      ###为实例对象赋值
     1,可以没有这个函数 实例没数据
     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运算符重载——类型转换

C++基础——C++面向对象之重载与多态基础总结(函数重载运算符重载多态的使用)

面向对象----方法的重载

面向对象高级编程——类实例及其他对象的内建函数

Php廖雪峰教程学习与实战

类和对象(上)