首页 > 编程语言 >Python中的魔术方法大全

Python中的魔术方法大全

时间:2023-02-23 22:55:49浏览次数:36  
标签:__ Python self 魔术 对象 print 方法 def 大全

魔术方法

一种特殊的方法而已

特点

不需要人工调用,在特定时刻自动触发执行

魔术方法种类

1.__init__初始化方法*******

触发时机:实例化对象之后触发
作用:为对象添加对象的所属成员
参数:self,接收当前对象,其他的参数根据实例化的传参决定
返回值:无
注意事项:无

# _author:"Ma ren"
# date: 2023/2/23

# __init__:初始化魔术方法

class Human:
    # 属性
    name = '张三'
    age = 18
    gender = 'male'
    skin = 'yellow'

    # 方法
    def __init__(self,name,gender,age):  # name是__init__的形参
        print('__init__方法被执行')
        # print(self)
        # 为对象添加成员
        self.name = name   # self.name中的name是对象的成员
        self.gender = gender
        self.age = age


    def eat(self):
        print('吃饭方法')

    def run(self):
        print('跑步方法')

    def sleep(self):
        print('睡觉方法')

# 实例化一个人的对象
h1 = Human('lxx','male',18)   #<1.制作一个对象,2.为对象初始化操作>
print(h1.__dict__)  # 打印对象成员
View Code

2.__new__构造方法

触发时机:实例化对象的时候触发
作用:管理控制对象的生成过程
参数:一个cls接收当前类,其他的参数根据实例化的参数决定
返回值: 可有可无 没有返回值 实例化结果为None
注意事项:__new__魔术方法跟__init__的魔术方法参数一致(除了第一个)

# _author:"Ma ren"
# date: 2023/2/23

# __new__构造方法

class Human:
    # 属性
    name = '张三'
    age = 18
    gender = 'male'
    skin = 'yellow'

    # 方法
    # 魔术方法
    def __new__(cls, *args, **kwargs):
        # print('__new__方法被触发')
        # return 2
        # 自己控制对象的生成(女的生,男的不生)
        # print(args)
        if '男' in args:
            # 不生成对象
            pass
        else:
            # 生成对象且返回
            return object.__new__(cls)  # object上帝之手


    def eat(self):
        print('吃饭方法')

    def run(self):
        print('跑步方法')

    def sleep(self):
        print('睡觉方法')


h1 = Human('女')   # 实例化对象【1.制作一个对象(new),2.初始化对象】
print(h1)

# 利用__new__方法来一个狸猫换太子
# _author:"Ma ren"
# date: 2023/2/23


class  Monkey:
    pass


class Human:
    def __new__(cls, *args, **kwargs):
        return object.__new__(Monkey)
    pass


# 看似使用人类造对象,实际却生成了一个猴子对象
human_obj = Human()
print(human_obj)
View Code

3.__del__析构方法

触发时机:对象被系统回收的时候触发
作用:回收系统使用过程中的信息和变量
参数:一个self接收当前对象
返回值:无
注意事项:无

# _author:"Ma ren"
# date: 2023/2/23

# __del__魔术方法

class Human:
    # 属性
    name = '张三'
    age = 18
    gender = 'male'
    skin = 'yellow'

    # 方法


    def eat(self):
        print('吃饭方法')

    def run(self):
        print('跑步方法')

    def sleep(self):
        print('睡觉方法')

    # 析构方法
    def __del__(self):
        print('__del__方法被触发')

h = Human()
print(h)

# 主动删除对象
del h  # 删除对象,系统回收对象
print('=================')
View Code

 

标签:__,Python,self,魔术,对象,print,方法,def,大全
From: https://www.cnblogs.com/MRPython/p/17149768.html

相关文章

  • Python 异步: 等待任务集合(11)
    我们可以通过asyncio.wait()函数等待异步任务完成。可以等待不同的条件,例如所有任务完成、第一个任务完成以及第一个任务因异常而失败。让我们仔细看看。1.什么是asy......
  • python爬虫学习——bs4
    bs4将一个复杂的html文档转化为一个复杂的树形结构,每个节点都是python对象,所有对象可以分为四种:Tag、NavigableString、BeautifulSoup、Commentfrombs4importBeautifu......
  • python numpy 中的冒号
    python中冒号实际上有两个意思:1.全部选择matrix1[1,:]表示matrix的第1行的所有元素matrix1[:,1]表示matrix的第1列的所有元素2.表示区间,含左不含右matrix1[1,0:......
  • Spring Boot 之Application.properties配置大全
    前几期,我们讲到了SpringBoot的框架,动手操作过的人,应该都还记得,并且觉得确实简化了很多,那么对于其中application.properties的配置文件,其中的配置信息有哪些,现在小编这几天......
  • python 异常处理
    异常异常处理是一种艺术,一旦你掌握,会授予你无穷的力量。我将要向你展示我们能处理异常的一些方式。最基本的术语里我们知道了try/except从句。可能触发异常产生的代码会......
  • pdf2docx:可将 PDF 转换成 docx 文件的 Python 库
    pdf2docx:https://github.com/dothinking/pdf2docx 可将PDF转换成docx文件的Python库。frompdf2docximportparsepdf_file='/path/to/sample.pdf'docx_fi......
  • python各种推导式(comprehensions)
    各种推导式(comprehensions)推导式(又称解析式)是Python的一种独有特性,如果我被迫离开了它,我会非常想念。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。共......
  • 简单友好的 Python 任务调度库
    schedule:https://github.com/dbader/schedule该项目人性化的API设计,让开发者仅用几行代码就能轻松实现定时任务。它不依赖任何第三方库,全部代码也就一个文件800多......
  • python | 使用PIL压缩图片并使用字节流输出
    python|使用PIL压缩图片并使用字节流输出因为自己服务器上的博客流量比较小,所以加了这个用来压缩图片,不改变图片大小,将图像质量降低。直接丢代码了:importosfromio......
  • python基础知识100题-面试
    1、一行代码实现1--100之和#利用sum()函数求和#res=sum(range(1,101))#print(res)#50502、如何在一个函数内部修改全局变量#利用global修改全局变量'''a=......