zoukankan      html  css  js  c++  java
  • 19面向对象--特殊成员

    在python中,除了一些方法,属性之外,还有一些特殊成员

     1 class Foo(object):
     2 
     3     def __new__(cls, *args, **kwargs):
     4         """
     5         创建一个空对象
     6         :param args:
     7         :param kwargs:
     8         :return:
     9         """
    10         print(2)
    11         return object.__new__(cls)
    12 
    13     def __init__(self, a1, a2):
    14         # 为一个空对象进行数据的初始化
    15         self.a1 = a1
    16         self.a2 = a2
    17 
    18     def __call__(self, *args, **kwargs):
    19         print(1111)
    20 
    21     def __getitem__(self, item):
    22         print(item)
    23         return 8
    24 
    25     def __setitem__(self, key, value):
    26         print(key, value, 1111111)
    27 
    28     def __delitem__(self, key):
    29         print(key)
    30 
    31     def __add__(self, other):
    32         return self.a1 + other.a1
    33 
    34     def __enter__(self):
    35         print('进入文件')
    36         return 999
    37 
    38     def __exit__(self, exc_type, exc_val, exc_tb):
    39         print(222)
    40 
    41 
    42 # 1.类名() 自动执行__init__
    43 obj = Foo(1, 2)
    44 # 2.对象() 自动执行__call__
    45 obj()
    46 # 3.对象[] 自动执行 __getitem__
    47 ret = obj['语文']
    48 print(ret)
    49 # 4.对象['xxx']=123 自动执行 __setitem__  # 无返回值
    50 obj['k1'] = 123
    51 # 5.del 对象['xxxx'] 自动执行 __delitem__
    52 del obj['uuu']
    53 # 6.对象+对象   自动执行 __add__
    54 obj1 = Foo(1, 2)
    55 obj2 = Foo(3, 4)
    56 ret = obj1 + obj2
    57 print(ret)
    58 # 7.with 对象
    59 obj3 = Foo(1, 2)
    60 with obj as f:
    61     print(f)   # f就是enter的返回
    62     print('内部代码')
    63 # 8.真正的构造方法  __new__  在实例化一个对象时,首先执行的是new,其次才是init
  • 相关阅读:
    博客推荐
    oracle11g dataguard 安装手册(转)
    Linux文件系统介绍(转)
    降低磁盘IO使Oracle性能优化(转)
    关于AWR报告命中率指标的解释(转)
    oracle 锁的介绍 (转)
    oracle undo redo 解析
    oracle sqlplus 连接不正常
    Oracle技术嘉年华
    断线的回忆
  • 原文地址:https://www.cnblogs.com/cbslock/p/11220034.html
Copyright © 2011-2022 走看看