码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-12-01 16:56:54      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:dir   优秀的程序员   pytho   函数   面向   实例   重载函数   自带   lock   

 内建函数:类中特殊功能
  • __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.面向对象中常用内建函数与重载函数

标签:dir   优秀的程序员   pytho   函数   面向   实例   重载函数   自带   lock   

原文地址:https://www.cnblogs.com/zhangan/p/10049798.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!