• 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('结束上下文管理')
  • 相关阅读:
    华为P20 无法投屏到电视
    configuration error – unknown item ‘umask’ (notify administrator)
    oracle不支持update from的语法
    SQL Server 中update的小计
    sqlplus连接oracle数据库--密码含特殊字符
    redhat 7.6安装oracle 11gR2遇到两个问题
    ORA-15032 ORA-15028
    ORA-07391 sftopen error unable to open text file
    ORA-01017 invalid username/password logon denied
    Oracle CRS/GI 进程介绍
  • 原文地址:https://www.cnblogs.com/arrow-kejin/p/10410796.html
Copyright © 2020-2023  润新知