【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.应用

你可能感兴趣的:(Python,python,开发语言)