zoukankan      html  css  js  c++  java
  • Python学习笔记--魔法方法

    1.__init__()方法

        实例化对象时首先会调用的方法,返回值只能是None,不能是其他

    #__init__()方法
    class Class1:
        x=0
        y=0
        z=0
        def __init__(self,x,y):
            self.x=x
            self.y=y
        def __init__(self,x,y,z):
            self.x=x
            self.y=y
            self.z=z
        def getArea(self):
            if self.z==0:
                print("z为0")
            else:
                return self.x*self.y*self.z
    c1=Class1(2,3)
    c1.getArea()
    c2=Class1(2,3,4)
    print(c2.getArea())

    运行结果:

    Traceback (most recent call last):
      File "d:PythonWorkSpace.vscode	est.py", line 248, in <module>
        c1=Class1(2,3)
    TypeError: __init__() missing 1 required positional argument: 'z'

    由此可见,python后续写的会覆盖之前的__init()__方法

    #__init__()方法
    class Class1:
        x=0
        y=0
        z=0
        def __init__(self,x,y):
            self.x=x
            self.y=y
        def __init__(self,x,y,z):
            self.x=x
            self.y=y
            self.z=z
        def getArea(self):
            if self.z==0:
                print("z为0")
            else:
                return self.x*self.y*self.z
    c1=Class1(2,3,0)
    c1.getArea()
    c2=Class1(2,3,4)
    print(c2.getArea())
    
    #运行结果:
    z为0
    24

    2.__new__(cls[,...])

    __new__()方法事实上才是一个对象实例化时候调用的第一个方法,他的第一个参数不是Self而是这个类(cls),而其他的参数会直接传递给__init__()方法

    __new__()方法需要返回一个实例对象,通常是cls这个类实例化的对象,当然也可以返回其他的对象

    __new__()方法很少去重写

    3.__del__(self)

    python提供了一个析构器,成为__del__(),当对象要被销毁的时候,这个方法就会被调用。

    但并非del x时候就相当于自动调用x.__del__(),__del()__是当垃圾回收机制回收这个对象的时候调用的

    #__del__()
    class Class1:
        def __init__(self):
            print("我是初始方法")
        def __del__(self):
            print("我是删除方法")
    c1=Class1()
    c2=c1
    # c3=c2
    del c1
    print("-----------")
    del c2
    
    #运行结果:
    我是初始方法
    -----------
    我是删除方法
  • 相关阅读:
    Ubuntu 系统中设置环境变量 PATH 的方法
    JSP页面EL表达式无效的问题
    用超链接提交表单并传递一个参数
    sql触发器应用SQL中DateTime转换成Varchar样式
    算法导论第二章 习题作业记录
    【欧拉题四】三位数乘积所得的最大回文数
    Linux64下mysql安装和开发
    算法导论第三章 学习笔记
    【欧拉3】最大质因数
    常用linux命令/工具
  • 原文地址:https://www.cnblogs.com/jifeng0902/p/13917346.html
Copyright © 2011-2022 走看看