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
    
    #运行结果:
    我是初始方法
    -----------
    我是删除方法
  • 相关阅读:
    LeetCode刷题记录(1)
    TypeScript实现设计模式——观察者模式
    TypeScript实现设计模式——策略模式
    TypeScript实现设计模式——工厂模式
    TypeScript实现设计模式——单例模式
    nodejs爬虫--抓取CSDN某用户全部文章
    JavaScript实现常见的数据结构
    利用PicGo、GitHub和jsDelivr搭建图床
    2019年终总结
    Git学习记录(一)
  • 原文地址:https://www.cnblogs.com/jifeng0902/p/13917346.html
Copyright © 2011-2022 走看看