Python基础-魔法方法(常用)

一、魔法方法

1.概述

(1)在python中方法名如果是 __xxx__() 的,那么就有特殊的功能,因此叫做“魔法”方法

(2)其实每个魔法方法都是在对内建方法(str、del等))的重写

2.__init__方法

也叫初始化函数:def __init__(self,参数1,参数2,参数3)

(1)构造函数在类实例化之后自动执行

(2)构造函数传参在实例化的时候传参

(3)构造函数没有返回值

① 代码

# coding:utf-8

# 构造函数创建对象时就执行
class People():

    def __init__(self):
        print("这是一个构造函数...")

p = People()

print("--------------------------------------------")

# 构造函数传参
class People1():
    def __init__(self,name):
        print("我的名字是:{}".format(name))

p1 = People1("suner")

② 结果

 

3.__del__方法

(1)只有实例被删除之后,析构函数才会执行

(2)垃圾回收机制

(3)当有一个变量保存了对象的引用时,此对象的引用计数就会加1

(4)当使用del删除变量指向的对象时,如果对象的引用计数不为1,比如3,那么此时只会让这个引用计数减1,即变为2,当再次调用del时,变为1,再调用1次del,此时会将对象进行删除

① 代码

# coding:utf-8

class Animal():

    def __del__(self):
        print("__del__函数被调用")

a = Animal()
del a
print("a执行结束...")

print("--------分割线----------")

b = Animal()
print("b执行结束...")
del b

② 结果

4.__new__方法

(1)__new__至少要有一个参数cls,代表要实例化的类(并不是对象)

(2)__new__必须要有返回值,返回实例化出来的实例

(3)简单来说__new__方法,就是创建一个实例。

① 代码

# coding:utf-8

class A():
    def __init__(self):
        print("这是init方法")

    def __new__(cls, *args, **kwargs):
        print("这是new方法")
        return object.__new__(cls)

a = A()

② 结果

 

5.__str__方法

当使用print输出对象的时候,只要自己定义了__str__(self) 方法,那么就会打印从这个方法中return的数据

① 代码

# coding:utf-8

class A():
    def __init__(self,name):
        self.name = name

    def __str__(self):
        return "name is %s"%self.name

a = A("suner")
print(a)  # 打印a对象,会默认调用__str__方法

② 结果

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_39620483/article/details/86603977