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

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


回到顶部(go to top)

1. 类成员的修饰符

类的所有成员在上一步骤中已经做了详细的介绍,对于每一个类的成员而言都有两种形式:

公有成员,在任何地方都能访问

私有成员,只有在类的内部才能方法

私有成员和公有成员的定义不同:私有成员命名时,前两个字符是下划线。(特殊成员除外,例如:__init__、__call__、__dict__等)


  1. class C:
  2.  
  3. def __init__(self):
  4. self.name = '公有字段'
  5. self.__foo = "私有字段"

私有成员和公有成员的访问限制不同:

1.1 静态字段

公有静态字段:类可以访问;类内部可以访问;派生类中可以访问

私有静态字段:仅类内部可以访问

 公有静态字段:


  1. class C:
  2.  
  3. name = "公有静态字段"
  4.  
  5. def func(self):
  6. print(C.name)
  7.  
  8. class D(C):
  9.  
  10. def show(self):
  11. print(C.name)
  12.  
  13.  
  14. C.name # 类访问
  15.  
  16. obj = C()
  17. obj.func() # 类内部可以访问
  18.  
  19. obj_son = D()
  20. obj_son.show() # 派生类中可以访问

私有静态字段:


  1. class C:
  2.  
  3. __name = "公有静态字段"
  4.  
  5. def func(self):
  6. print(C.__name)
  7.  
  8. class D(C):
  9.  
  10. def show(self):
  11. print(C.__name)
  12.  
  13.  
  14. C.__name # 类访问 ==> 错误
  15.  
  16. obj = C()
  17. obj.func() # 类内部可以访问 ==> 正确
  18.  
  19. obj_son = D()
  20. obj_son.show() # 派生类中可以访问 ==> 错误

1.2 普通字段

公有普通字段:对象可以访问;类内部可以访问;派生类中可以访问

私有普通字段:仅类内部可以访问

如果想要强制访问私有字段,可以通过 【对象._类名__私有字段明 】访问(如:obj._C__foo),不建议强制访问私有成员。

公有普通字段:


  1. class C:
  2.  
  3. def __init__(self):
  4. self.foo = "公有字段"
  5.  
  6. def func(self):
  7. print(self.foo)  # 类内部访问
  8.  
  9. class D(C):
  10.  
  11. def show(self):
  12. print(self.foo) # 派生类中访问
  13.  
  14. obj = C()
  15.  
  16. obj.foo # 通过对象访问
  17. obj.func() # 类内部访问
  18.  
  19. obj_son = D();
  20. obj_son.show() # 派生类中访问

私有普通字段:


  1. class C:
  2.  
  3. def __init__(self):
  4. self.__foo = "私有字段"
  5.  
  6. def func(self):
  7. print(self.foo)  # 类内部访问
  8.  
  9. class D(C):
  10.  
  11. def show(self):
  12. print(self.foo) # 派生类中访问
  13.  
  14. obj = C()
  15.  
  16. obj.__foo # 通过对象访问 ==> 错误
  17. obj.func() # 类内部访问 ==> 正确
  18.  
  19. obj_son = D();
  20. obj_son.show() # 派生类中访问 ==> 错误

方法、属性的访问于上述方式相似,即:私有成员只能在类内部使用

非要访问私有属性的话,可以通过 对象._类__属性名

回到顶部(go to top)

2. 类的特殊成员

前面介绍了Python的类成员以及成员修饰符,从而了解到类中有字段、方法和属性三大类成员,并且成员名前如果有两个下划线,则表示该成员是私有成员,私有成员只能由类内部调用。无论人或事物往往都有不按套路出牌的情况,Python的类成员也是如此,存在着一些具有特殊含义的成员,详情如下:

2.1 __doc__

表示类的描述信息 


  1. class Foo:
  2. """ 描述类信息,这是用于看片的神奇 """
  3.  
  4. def func(self):
  5. pass
  6.  
  7. print Foo.__doc__
  8. #输出:类的描述信息

2.2 __module__ 和  __class__

__module__ 表示当前操作的对象在那个模块

__class__     表示当前操作的对象的类是什么

 lib/aa.py:


  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3.  
相关教程