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

【Python函数】魔法函数

1.定义

        以__开头和结尾的函数

2.好处

        为类增加额外的功能    

3.常见的魔法函数
  • __init__()
    • 作用:初始化对象的属性
    • 调用时机: 每次创建新对象会自动调用
    • ---------------使用__init__-----------------
      class MyCl():
          def __init__(self, name, age):
              self.name =name
              self.age = age
      
      
      myCi = MyCl("Mona",28)
      print(myCi.name)  # Mona
      print(myCi.age)  # 28
      
      ----------------未使用__init__----------
      class MyCl():
          def Message(self, name, age):
              self.name =name
              self.age = age
      
      myCi = MyCl()
      myCi.Message("Mona",28)
      print(myCi.name)
      print(myCi.age)
  • __new__()静态方法
    • 作用:作用在__init__方法之前
    • 调用时机: 类创建对象时即实例化且在调用__init__之前
    • 如果重写返回类的实例的引用作为__init__方法的self,如果无返回,则不会调用__init__方法;未重写则调用父类的__new__方法
    • def __new__(cls, *args, **kwargs) : #cls是指的当前实例的类
   
       a=super().__new__(cls)
 
       return a
  • __str__()
    • 作用:返回对象的描述信息
    • 调用时机:打印对象自动调用
    • ------------------使用__str__函数---------------------
      class MyCl():
          def __init__(self, name, age):
              self.name =name
              self.age = age
      
          def __str__(self):
              return f"{self.name}的年龄是{self.age}"
      
      
      myCi = MyCl("Mona",28)
      print(myCi) # Mona的年龄是28
      
      ------------------未使用__str__函数--------------
      class MyCl():
          def __init__(self, name, age):
              self.name =name
              self.age = age
      
      
      myCi = MyCl("Mona",28)
      print(myCi)  # <__main__.MyCl object at 0x10d15bcd0>

4.应用

http://www.kler.cn/a/158467.html

相关文章:

  • 计算机网络 (5)数据通信的基础知识
  • ThreadLocal原理及其内存泄漏
  • 数据结构(单向链表——c语言实现)
  • python画图|3D errorbars基础教程
  • 一文了解 inductive bias(归纳偏好)
  • 5G的SUCI、SUPI、5G-GUTI使用场景及关系
  • 如何写一个吸引人的标题?
  • copilot的使用
  • 钉钉员工组织资料实时同步至飞书的应用解析
  • C#Backgroundworker与Thread的区别
  • 解决ssr服务端渲染程序启动报错: ReferenceError: location is not defined
  • minio配置监听(对象操作日志)
  • 连接池 Druid (四) - 连接归还
  • Vue3 pinia的基本使用
  • Squid安装与配置(ip代理)
  • leetcode面试经典150题——33 最小覆盖子串(滑动窗口)
  • 基于SpringBoot的驾校管理系统
  • Linux-实现小型日志系统
  • 【SpringCloud系列】@FeignClient微服务轻舞者
  • 【C++】动态内存管理——new和delete
  • Python字符串格式化
  • 数据结构-带头双向循环链表
  • 【4】PyQt输入框
  • BabySpartan:对non-uniform computation的Lasso-based SNARK
  • AWS攻略——创建VPC
  • 市场调研:2023年SLG游戏行业需求及发展前景预测