VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Python基础教程 >
  • python基础教程之python基础(27):类成员的修饰符、类的特殊成员(2)

本站最新发布   Python从入门到精通|Python基础教程
试听地址  
https://www.xin3721.com/eschool/pythonxin3721/


class C:
  •  
  • def __init__(self):
  • self.name = 'xhh'
  • index.py:

    
    
    1. from lib.aa import C
    2.  
    3. obj = C()
    4. print obj.__module__ # 输出 lib.aa,即:输出模块
    5. print obj.__class__ # 输出 lib.aa.C,即:输出类

    2.3 __init__

    
    
    1. class Foo:
    2.  
    3. def __init__(self, name):
    4. self.name = name
    5. self.age = 18
    6.  
    7. obj = Foo('xhh') # 自动执行类中的 __init__ 方法

    2.4 __del__

    析构方法,当对象在内存中被释放时,自动触发执行。

    注:此方法一般无须定义,因为Python是一门高级语言,程序员在使用时无需关心内存的分配和释放,因为此工作都是交给Python解释器来执行,所以,析构函数的调用是由解释器在进行垃圾回收时自动触发执行的。

    
    
    1. class Foo:
    2.  
    3. def __del__(self):
    4. pass

    2.5 __call__

    对象后面加括号,触发执行。

    注:构造方法的执行是由创建对象触发的,即:对象 = 类名() ;而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类()()

    
    
    1. class Foo:
    2.  
    3. def __init__(self):
    4. pass
    5.  
    6. def __call__(self, *args, **kwargs):
    7.  
    8. print '__call__'
    9.  
    10. obj = Foo() # 执行 __init__
    11. obj() # 执行 __call__

    2.6 __dict__

    类或对象中的所有成员

    上文中我们知道:类的普通字段属于对象;类中的静态字段和方法等属于类,即:

     

    
    
    1. class Province:
    2.  
    3. country = 'China'
    4.  
    5. def __init__(self, name, count):
    6. self.name = name
    7. self.count = count
    8.  
    9. def func(self, *args, **kwargs):
    10. print('func')
    11.  
    12. # 获取类的成员,即:静态字段、方法、
    13. print Province.__dict__
    14. # 输出:{'country': 'China', '__module__': '__main__', 'func': <function func at 0x10be30f50>, '__init__': <function __init__ at 0x10be30ed8>, '__doc__': None}
    15.  
    16. obj1 = Province('HeBei',10000)
    17. print obj1.__dict__
    18. # 获取 对象obj1 的成员
    19. # 输出:{'count': 10000, 'name': 'HeBei'}
    20.  
    21. obj2 = Province('HeNan', 3888)
    22. print obj2.__dict__
    23. # 获取 对象obj1 的成员
    24. # 输出:{'count': 3888, 'name': 'HeNan'}

    2.7 __str__

    如果一个类中定义了__str__方法,那么在打印 对象 时,默认输出该方法的返回值。

    
    
    1. class Foo:
    2.  
    3. def __str__(self):
    4. return 'xhh'
    5.  
    6. obj = Foo()
    7. print(obj)
    8. # 输出:wupeiqi

    2.8 __getitem__、__setitem__、__delitem__

    用于索引操作,如字典。以上分别表示获取、设置、删除数据 

    
    
    1. #!/usr/bin/env python
    2. # -*- coding:utf-8 -*-
    3.  
    4. class Foo(object):
    5.  
    6. def __getitem__(self, key):
    7. print '__getitem__',key
    8.  
    9. def __setitem__(self, key, value):
    10. print '__setitem__',key,value
    11.  
    12. def __delitem__(self, key):
    13. print '__delitem__',key
    14.  
    15. obj = Foo()
    16.  
    17. result = obj['k1'] # 自动触发执行 __getitem__
    18. obj['k2'] = 'wupeiqi' # 自动触发执行 __setitem__
    19. del obj['k1'] # 自动触发执行 __delitem__

    2.9 __getslice__、__setslice__、__delslice__

    该三个方法用于分片操作,如:列表

    
          
    
    
    
      
    相关教程