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
    
    #运行结果:
    我是初始方法
    -----------
    我是删除方法
  • 相关阅读:
    Palindrome Linked List 解答
    Word Break II 解答
    Array vs Linked List
    Reverse Linked List II 解答
    Calculate Number Of Islands And Lakes 解答
    Sqrt(x) 解答
    Find Median from Data Stream 解答
    Majority Element II 解答
    Binary Search Tree DFS Template
    188. Best Time to Buy and Sell Stock IV
  • 原文地址:https://www.cnblogs.com/jifeng0902/p/13917346.html
Copyright © 2011-2022 走看看