一:成员修饰符:分为共有成员和私有成员:

私有成员:__通过两个下滑线;无法直接访问,要访问只能间接访问;

如下我们定义了一个对象,里面有两个共有的成员变量,成员变量是共有的时候我们可以外部访问,如果私有的我们不能访问:

 class Goo:
def __init__(self,name,age):
self.name=name
self.age=age
obj=Goo('wing',)
print(obj.age)

如上可以访问,obj.age可以访问;

1.2如下显示的是私有的成员变量:无法外部访问

 class Goo:
def __init__(self,name,age):
self.name=name
self.__age=age
obj=Goo('wing',)
print(obj.__age) 执行结果:
Traceback (most recent call last):
File "D:/Study/面向对象/成员修饰符.py", line , in <module>
print(obj.__age)
AttributeError: 'Goo' object has no attribute '__age'

如上提示是私有的无法访问

1.3如上的不能直接访问,我们可以通过如下的方法间接访问:

 class Goo:
def __init__(self,name,age):
self.name=name
self.__age=age
def show(self):
return self.__age
obj=Goo('wing',)
ret =obj.show()
print(ret)

1.4只要带有下滑——的都不可以访问了:

 class fOO:
def __show(self):
return
obj=foo()
ret =obj.__show()
print(ret) 执行结果:
 Traceback (most recent call last):
File "D:/Study/面向对象/成员修饰符.py", line , in <module>
print(obj.__age)
AttributeError: 'Goo' object has no attribute '__age'

1.5私有方法也可以通过间接访问,我们可以定义一个共有的方法,然后通过共有的方法,简接的访问私有的私有的方法,然后通过对象调用共有的方法,然后通过间接访问来访问私有的方法;

 class Foo:
def __show(self):
return def f2(self):
return self.__show() obj=Foo()
ret=obj.f2()
print(ret)

1.6那我们现在来思考一个问题:如果父类里面有私有成员,我们在子类里面能够访问吗?

 class Foo:
def __init__(self):
self.__gene=
class F(Foo):
def __init__(self,name):
self.name=name
self.__age=
super(F,self).__init__()
def show(self):
print(self.__age)
print(self.__gene)
s=F('aaa')
s.show()

执行结果:

 F:\python3\python.exe D:/Study/面向对象/成员修饰符.py
Traceback (most recent call last):
File "D:/Study/面向对象/成员修饰符.py", line , in <module>
s.show()
File "D:/Study/面向对象/成员修饰符.py", line , in show
print(self.__gene)
AttributeError: 'F' object has no attribute '_F__gene'

通过上述案例说明:子类的不可以访问父类的私有的成员,如果想要访问,我们需要在父类里面间接的访问私有的成员,然后子类继承了父类,子类的对象,直接可以调用父类的那个间接的方法,就可以间接的访问父类的私有的成员变量了;

Python之 ---成员修饰符的更多相关文章

  1. python - 类成员修饰符

    在java,c#类的成员修饰符包括,公有.私有.程序集可用的.受保护的. 对于python来说,只有两个成员修饰符:公有成员,私有成员 成员修饰符是来修饰谁呢?当然是修饰成员了.那么python类的成 ...

  2. Python面向对象(成员修饰符)

    day25 成员修饰符 class Foo: def __init__(self, name, age): self.name = name self.__age = age#私有,外部无法直接访问 ...

  3. Python:Day25 成员修饰符、特殊成员、反射、单例

    一.成员修饰符 共有成员 私有成员,__字段名,__方法 - 无法直接访问,只能间接访问 class Foo: def __init__(self,name,age): self.name = nam ...

  4. Python面向对象之成员修饰符

    对于这些类成员有修饰符 之前定义字段country任何对象都可以访问,是公有的 可以定义为私用属性,只有类内部的方法可以调用,外部不能直接调用,但是可以间接调用 vim day7-10.py #!/u ...

  5. Python学习 :面向对象 -- 成员修饰符

    成员修饰符 两种成员 - 公有成员 - 私有成员, __字段名 - 无法直接访问,只能通过内部方法来间接访问私有成员 简例:公有成员与私有成员  class Info: country = '中国' ...

  6. Python学习:17.Python面向对象(四、属性(特性),成员修饰符,类的特殊成员)

    一.属性(特性) 普通方法去执行的时候,后面需要加括号,特性方法执行的时候和静态字段一样不需要不需要加括号. 特性方法不和字段同名. 特性方法不能传参数. 在我们定义数据库字段类的时候,往往需要对其中 ...

  7. Python菜鸟之路:Python基础-类(2)——成员、成员修饰符、异常及其他

    三大成员 在Python的面向对象中,主要包括三大成员:字段.方法.属性 字段 类成员的字段又可分为普通字段.静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同,代码示例如下: ...

  8. python学习day20 面向对象(二)类成员&成员修饰符

    1.成员 类成员 类变量 绑定方法 类方法 静态方法 属性 实例成员(对象) 实例变量 1.1实例变量 类实例化后的对象内部的变量 1.2类变量 类中的变量,写在类的下一级和方法同一级. 访问方法: ...

  9. python_way,day8 面向对象【多态、成员--字段 方法 属性、成员修饰符、特殊成员、异常处理、设计模式之单例模式、模块:isinstance、issubclass】

    python_way day8 一.面向对象三大特性: 多态 二.面向对象中的成员 字段.方法属性 三.成员修饰符 四.特殊成员 __init__.__doc__.__call__.__setitem ...

随机推荐

  1. android 开发 实现多个动态权限的方法(并且兼容6.0以下的版本权限授权)

    android开发权限授权因为版本的不同有不同的授权方式,6.0以下的版本使用的是在注册表中添加权限的静态授权(这种授权权限提示只会出现在app安装的时候),而6.0以上(包含6.0)就需要动态授权的 ...

  2. redis 连接超时。。

    在虚拟机安装后.在项目中加入redis 想测试一下功能 然后在物理机死活连不上. 1.用物理机ping 虚拟机的IP 通.... 2.然后.把redis.conf 里面bind 0.0.0.0 依然没 ...

  3. 23.模拟登录cookies请求速询网站数据

    采集速询网站数据: 网站地址:http://www.suxun0752.com/index.html 网站是需要账号登录才给返回信息的,我这里是直接拿的登录后的cookies请求的数据,cookies ...

  4. Yii框架中使用SRBAC作为权限管理模块时遇到的问题

    Yii框架中使用SRBAC作为权限管理模块时遇到的问题   看到Yii中提供RBAC的插件,SRBAC,就想用用. 结果按照手册上的安装办法,整来整去,安装完了,可就是进不了权限管理界面. 最后想到, ...

  5. winform 之公共控件

    Button 按钮 属性: (一).布局: 1.AutoSize:控件是否根据内容调整大小 2.Location:当前按钮位于界面位置 3.Dock:控件锁定到界面位置 -None:不锁定 4.Mar ...

  6. 3. java.lang.UnsupportedClassVersionError: javax/annotation/ManagedBean : Unsupported major.minor version 51.0

    问题描述:

  7. Android Camera2的使用

    参考:https://developer.android.com/reference/android/hardware/camera2/package-summary.html camera2提供了一 ...

  8. ssm学习的第一个demo---crm(2)

    第四步:                  别名不区分大小写:入参为基本类型,#{可以随便写} 把静态资源(jsp.css.js.fonts)导入到项目中 第五步: 创建Contrller类(和普通j ...

  9. PHP 扩展在 Linux(centos7)系统下的编译与安装 以 mysqli 为例

    (操作系统 Centos7,环境版本 php7) 01,进入到 PHP 解压后的源码包的的 ext 文件夹 02,查看是否存在 mysqli 扩展 => ls, 如果不存在需要去响应网站下载 ( ...

  10. keyword模块

    导入关键字模块 import keyword 列出当前系统中Python的关键字 >>> keyword.kwlist ['and', 'as', 'assert', 'break' ...