• python的魔法方法


     1 '''
     2 类有几个魔法方法是经常使用的
     3 '''
     4 class CreateNumberException(Exception):
     5     '''
     6     这是一个自定义异常类
     7     '''
     8     def __str__(self):
     9         print('改类的实例化对象已经超过5')
    10 
    11 class Test(object):
    12     create_number = 0
    13     def __init__(self):
    14         '''
    15         初始化函数
    16         '''
    17         self.a = 1
    18     def __str__(self):
    19         '''
    20         当类被像变量一样调用时执行  如:test=Test
    21         :return:
    22         '''
    23         print(self.a)
    24     def __call__(self, *args, **kwargs):
    25         '''
    26         允许一个类像函数一样被调用  如: Test()
    27         :param args:
    28         :param kwargs:
    29         :return:
    30         '''
    31         print('************')
    32     def __new__(cls, *args, **kwargs):
    33         '''
    34         当对象被创建的时候执行(先于__init__),在实例被创建后,返回了这个实例,才会去执行init,初始化类的一些属性
    35         在这里和下面的 __del__ 结合实现了类对象的创建次数限制
    36         :param args:
    37         :param kwargs:
    38         :return:
    39         '''
    40         cls.create_number += 1
    41         if cls.create_number > 5:
    42             raise CreateNumberException
    43 
    44     def __del__(self):
    45         '''
    46         当对象被销毁的时候执行
    47         :return:
    48         '''
    49         self.__class__.create_number -= 1
    50     def __enter__(self):
    51         '''
    52         定义当使用 with 语句时的初始化行为
    53         进入上下文管理(with语句)
    54         :return:
    55         '''
    56         print('进入上下文管理')
    57 
    58     def __exit__(self, exc_type, exc_val, exc_tb):
    59         '''
    60         定义当使用 with 语句时的结束行为
    61         结束上下文管理(with语句)
    62         exc_type如果抛出异常,这里获取异常的类型
    63         exc_val如果抛出异常,这里显示异常内容
    64         exc_tb如果抛出异常,这里显示所在位置
    65         '''
    66         print('结束上下文管理')
  • 相关阅读:
    SQL Server学习之路:建立数据库、建立表
    tomcat访问的重定向问题
    PAT A1107——并查集
    ^-^
    JSON.parse()和JSON.stringify()的用法
    Android——ViewHolder的作用与用法
    题解-Atcoder_agc005D ~K Perm Counting
    题解-bzoj2560 串珠子
    题解-Codeforces710F String Set Queries
    游记-NOIP2018
  • 原文地址:https://www.cnblogs.com/arrow-kejin/p/10410796.html
Copyright © 2020-2023  润新知