当前位置: 首页 > news >正文

[python] python中的魔法方法和属性

一 魔法属性

__module__ : 表示当前操作对象所在的模块

__class__ 当前操作对象所在的类

__doc__ 类的描述信息,函数也可以,必须在最上面一行,且用多行注释来写

class Sinstance(object):"""这是一个重写__new__方法的单例类"""obj = Nonedef __new__(cls, *args, **kwargs):"""__new__<UNK>"""if cls.obj is None:cls.obj = super().__new__(cls)return cls.objdef __init__(self):print("__init__")
  • 比如这种方式就能够别__doc__属性捕获到
    """这是一个重写__new__方法的单例类"""
def test():"""函数的描述信息"""
print(Sinstance.__doc__)
print(Sinstance.__new__.__doc__)
print(test.__doc__)
print(test.__module__)
print(test.__class__)
p1 = Sinstance()
print(p1.__module__)
print(p1.__class__)

二 魔法方法

__str__():对象的描述信息,实例对象 和 __doc__属性不同这个是返回的是类对象的描述信息

  • 如果类中定义了此方法,那么再打印对象是,默认输出该方法的返回值,也就是打印该方法中的返回值,不再打印地址的引用
    # __str__方法必须有返回,并且是字符串类型
class strtest(object):name = "python"def __str__(self):return "测试"+self.name+"__str__魔法方法"
str_test = strtest()
print(str_test)
# __del__() : 析构函数 在删除某个对象时调用# __call__(): 使一个实例对象成为可调用对象 (像函数那样被调用)
  • 这个就会输出false因为没有定义__call__方法
class enablecall_test(object):"""测试可调用对象"""pass
callobject = enablecall_test()
print(callable(callobject))

我们来定义一个__call__方法

  • 使用实例对象()-->比如下面的callobject()实际上就是调用-->__call__方法
class enablecall_test(object):"""测试可调用对象"""def __call__(self):print("enablecall_test")
# 其实就是在调用__call__方法
callobject = enablecall_test()
callobject()
print(callable(callobject))

http://www.xdnf.cn/news/442603.html

相关文章:

  • 【Python 异常处理】
  • 【c语言内存函数】
  • Kuka AI音乐AI音乐开发「人声伴奏分离」 —— 「Kuka Api系列|中文咬字清晰|AI音乐API」第6篇
  • 梯度优化提示词:模型生成精准回答的秘密
  • libmemcached库api接口讲解四
  • 反向搭理搭建于网络安全的分层关系讨论
  • 计算机网络-MPLS VPN基础概念
  • FlashInfer - 测试的GPU H100 SXM、A100 PCIe、RTX 6000 Ada、RTX 4090
  • 具身智能梳理以及展望
  • React Flow 简介:构建交互式流程图的最佳工具
  • 如何远程执行脚本不留痕迹
  • MCU ESP32-S3+SD NAND(贴片式T卡):智能皮电手环(GSR智能手环)性能与存储的深度评测
  • MoonBit正式入驻GitCode!AI时代的编程语言新星,开启高性能开发新纪元
  • LVS负载均衡群集和keepalive
  • Canvas知识框架
  • CSP信奥赛新增的算法-马拉车算法(Manacher‘s Algorithm)
  • 使用 Semantic Kernel 调用 Qwen-VL 多模态模型
  • YashanDB V23.4 LTS 正式发布|两地三中心、库级闪回重磅特性上线,生产级可用性再升级
  • docker(二)初识 docker
  • Rust入门之高级Trait
  • 机器学习 Day17 朴素贝叶斯算法-----概率论知识
  • 2025视频协作工具全景解析:技术跃迁与场景重构
  • 【Linux网络】认识网络
  • 编译openssl源码
  • 【软件工程】基于数据流和依赖分析
  • 商城小程序源码介绍
  • OpenHarmony系统HDF驱动开发介绍(补充)
  • react+html2canvas+jspdf将页面导出pdf
  • 673SJBH基于ASP的公交系统
  • 鸿蒙OSUniApp 实现图片上传与压缩功能#三方框架 #Uniapp