python基础(27):类成员的修饰符、类的特殊成员

网友投稿 261 2022-08-07

python基础(27):类成员的修饰符、类的特殊成员

回到顶部(go to top)

1. 类成员的修饰符

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

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

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

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

class C:

 

def __init__(self):

self.name = '公有字段'

self.__foo = "私有字段"

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

1.1 静态字段

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

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

公有静态字段:

class C:

 

name = "公有静态字段"

 

def func(self):

print(C.name)

 

class D(C):

 

def show(self):

print(C.name)

 

 

C.name # 类访问

 

obj = C()

obj.func() # 类内部可以访问

 

obj_son = D()

obj_son.show() # 派生类中可以访问

私有静态字段:

class C:

 

__name = "公有静态字段"

 

def func(self):

print(C.__name)

 

class D(C):

 

def show(self):

print(C.__name)

 

 

C.__name # 类访问 ==> 错误

 

obj = C()

obj.func() # 类内部可以访问 ==> 正确

 

obj_son = D()

obj_son.show() # 派生类中可以访问 ==> 错误

1.2 普通字段

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

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

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

公有普通字段:

class C:

 

def __init__(self):

self.foo = "公有字段"

 

def func(self):

print(self.foo)  # 类内部访问

 

class D(C):

 

def show(self):

print(self.foo) # 派生类中访问

 

obj = C()

 

obj.foo # 通过对象访问

obj.func() # 类内部访问

 

obj_son = D();

obj_son.show() # 派生类中访问

私有普通字段:

class C:

 

def __init__(self):

self.__foo = "私有字段"

 

def func(self):

print(self.foo)  # 类内部访问

 

class D(C):

 

def show(self):

print(self.foo) # 派生类中访问

 

obj = C()

 

obj.__foo # 通过对象访问 ==> 错误

obj.func() # 类内部访问 ==> 正确

 

obj_son = D();

obj_son.show() # 派生类中访问 ==> 错误

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

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

回到顶部(go to top)

2. 类的特殊成员

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

2.1 __doc__

表示类的描述信息

class Foo:

""" 描述类信息,这是用于看片的神奇 """

 

def func(self):

pass

 

print Foo.__doc__

#输出:类的描述信息

2.2 __module__ 和  __class__

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

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

lib/aa.py:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

共4页: 上一页1234下一页

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python发送邮件(Python实现邮件发送)
下一篇:Python—创建进程的三种方式(如何创建python程序)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~