魔方方法之--类的构造(__init__,__new__)和析构(__del__)方法

  1. 构造方法(参见小甲鱼入门教程)

    __ init__()方法:类的初始化方法,初始化类对象时被调用,需要的时候再调用它

  注意点:这个方法的返回值必须None

 class Rectangle():
       def __init__(self,width,height):
           self.width =width
           self.height=height  

 __ new __ ()方法:实际调调用在__ init __()之前.实例化对象时第一个被调用的方法.在新创建一个对象时调用,一般不会重写它,继承自不可变类型,才显示它的作用

   class CapStr(str):
       def __new__(cls,string):
           string=str.upper(string)
           return str.__new__(cls,string)
   a=CapStr(‘I will be transfer‘)
   print(a) #结果 I WILL BE TRANSFER

  1. 析构方法

  ? __ del __ ()方法是垃圾回收机制回收对象时调用,对象被删除不一定会调用这个方法.对象地址里面的内容被删为空才会调用这个方法.

  

def __del__(self):
    print(‘__del__方法被调用了‘)
b,c=a,a
c=a
print(‘del a‘)
del a
print(‘del b‘)
del b
print(‘del c‘)
del c #__del__方法被调用了

原文地址:https://www.cnblogs.com/zhizihuakai66/p/8922628.html

时间: 2024-10-10 13:19:12

魔方方法之--类的构造(__init__,__new__)和析构(__del__)方法的相关文章

Python的__init__, __new__魔法方法以及在__metaclass__元类中的使用

Python中类的实例化是由Python解释器先后调用__new__,__init__这两个魔法方法来完成的,前者用来完成实例化后的对象的"骨架"(比如,解释器会为对象分配地址,并返回一个指向该对象的引用值,该引用值会被紧接着传递给__init__函数),后者用" self.属性名 = 属性值 "这样的方式对实例化的对象进行"填充". 1.__new__ 在一个类(假设为类A)实例化出一个对象的过程中,__new__()方法先于__init__(

魔方方法篇第一章--------构造与析构

我们最为熟知的基本的魔法方法就是 __init__ ,我们可以用它来指明一个对象初始化的行为.然而,当我们调用 x = SomeClass() 的时候, __init__ 并不是第一个被调用的方法.事实上,第一个被调用的是 __new__ ,这个 方法才真正地创建了实例.当这个对象的生命周期结束的时候(指类被删除之后), __del__ 会被调用.让我们近一步理解这三个方法: __new__(cls,[...) __new__ 是对象实例化时第一个调用的方法,它只取下 cls 参数,并把其他参数

python__基础 : 类的__init__,__str__,__del__方法

__init__:当实例化一个类的时候,首相会执行__new__方法创建一个对象,接下来会执行__init__方法对对象的一些属性进行初始化. 所以如果对象有属性,一般会直接写在__init__方法里面: class Test: def __init__(self, a, b): self.a = a self.b = b test = Test(a, b) __str__:当实例化一个类之后,就有了一个对象的引用,如 test = Test() 这个时候如果直接print(test),输出的是

自定义元类 __call__,__init__,__new__总结

只要对象能被调用 产生对象的类里必然有__call__方法 在调用类时,必定先触发type里的__call__ __call__下有: 1.产生对象的object.__new__ 2..被调用的类自己的__init__ class AA(type): def __init__(self,class_name,class_bases,class_dic): super().__init__(class_name,class_bases,class_dic) def __call__(self, *

简析 __init__ __new__ __call__ 方法

任何事物都有一个从创建,被使用,再到消亡的过程,在程序语言面向对象编程模型中,对象也有相似的命运:创建.初始化.使用.垃圾回收,不同的阶段由不同的方法(角色)负责执行. 定义一个类时,大家用得最多的就是 __init__ 方法,而 __new__ 和 __call__ 使用较少 __init__方法 该方法负责对象的初始化,系统执行该方法前,其实该对象已经存在了,要不然初始化什么呢?先看例子: # class A(object): python2 必须显示第继承object class A: d

java中静态代码块(static{...}),局部代码块(方法中{...}),构造代码块(类中{...})区别。

1.局部代码块: 格式:在方法中{局部代码块执行语句} 局部代码块,又叫普通代码块.它是作用在方法中的代码块. 作用:是控制变量的生命周期. 在程序中当我们定义完成一个局部变量x之后,并且在接下来的代码中,不想再用到它时,那么就没必要让x在内存中继续占用空间.因此就有了局部代码块. 2.构造代码块: 格式:在类中{构造代码块执行语句} 作用:就是给所有对象进行初始化. 注意几点: 1)每次创建对象他都会执行. 2)构造代码快是优于构造函数执行. 3)构造代码块与构造函数的区别是:构造代码块是给所

[转]python self、类、构造和析构方法 简单学习

self可以理解为自己类似于C++中的this指针,就是对象自身的意思,在用某个对象调用该方法时,就将该对象作为第一个参数传递给self python的类中有属性.方法:其中属性可以有私有和公有之分,方法可以对私有属性进行限定和保护,类似于C#中属性的功能. 方法也有私有和公有,__方法前面两个下划线 类,具有相似内部状态和运动规律的实体的集合(统称.抽象)具有相同属性和行为事物的统称,类是抽象的,使用时找到类的具体存在,使用这个具体存在--对象类是对象的模板  类:类名.属性.方法 class

Python学习_12_方法和类定制

方法 在上一篇随笔中,简单提到了类的某些方法:__init__()等的调用,并简要说明方法和函数的区别. 方法是在类内部定义的函数,方法也是对象,所以方法是类的属性,这就是为什么说实例的方法存在于类定义中.而在ruby中,方法肯定是存在于类中的,实例的单件方法就存在于单件类中,python中并没有单件类,并且方法本质也是属性,所以实例的方法也可以存在于自身,而在调用方法时,同样遵循命名空间的查找顺序.但是方法和一般是属性任然存在区别: from types import MethodTypecl

【python】-- 类的创建、__new__、__metaclass___

类的创建 前面的随笔都是关于类的知识,通过类创建对象,那这个类到底是怎么产生的呢? 1. 传统创建类 class Foo(object): def __init__(self,name): self.name = name f = Foo("shuaigaogao") f 是通过 Foo 类实例化的对象,其实,不仅 f 是一个对象,Foo类本身也是一个对象,因为在Python中一切事物都是对象,按照一切事物都是对象的理论:obj对象是通过执行Foo类的构造方法创建,那么Foo类对象应该