zoukankan      html  css  js  c++  java
  • Python3 魔法方法:构造和析构

    1、魔法方法的特点:

    魔法方法总是被双下划线包围例如:__init__

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

    __new__是在对象实例化后所调用的第一个方法,与其他方法不同他的第一个参数不时self而是cls因为,而其他参数会直接传递给__init__方法.

    注意:__new__方法的主要任务是返回一个实例对象,通常是cls这个类实例化的对象,当然你也可以返回其他对象

         开方法主要在改写一些内置函数的时候使用

    #定义一个Nint类型,传入参数为字符串的时候返回该字符串所有字符的ASCII码之和
    class Nint(int):
            def __new__(cls, arg=0):
                    if isinstance(arg, str):
                            total = 0
                            for each in arg:
                                    total += ord(each)
                            arg = total
                    return int.__new__(cls, arg)

    3、__init__(self,[....])(构建函数)

    __init__方法在类被实例化之后会被自动调用,可以重写这个方法为对象指定初始化方案

    __init__方法无返回,即返回值必须为None

    下面是一种错误的做法

    class Test:
            def __init__(self, x, y):
                    return x + y

    4、__del__(self)(析构函数)

    在对象被销毁(注:垃圾回时机制回收这个对象时才会被调用)时会自动调用这个函数

    class A:
        def __del__(self):
            print('正在调用__del__函数')
    
    
    >>> a=A()
    >>> b=a
    >>> c=a
    >>> del c
    >>> delb
    >>> del b
    >>> del a#到这里才删除了对象a
    正在调用__del__函数
  • 相关阅读:
    jQuery学习----简单介绍,基本使用,操作样式,动画
    JavaScript进阶----关于数字的方法,Math对象,日期对象,定时器,函数,for in
    MR的常用命令
    YARN的三种调度器
    yarn资源管理
    yarn的架构设计
    yarn的web界面查看log时出现的问题
    HDFS副本放置策略
    HDFS读流程
    HDFS写流程
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/8427938.html
Copyright © 2011-2022 走看看