Python之 ---成员修饰符
一:成员修饰符:分为共有成员和私有成员:
私有成员:__通过两个下滑线;无法直接访问,要访问只能间接访问;
如下我们定义了一个对象,里面有两个共有的成员变量,成员变量是共有的时候我们可以外部访问,如果私有的我们不能访问:
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之 ---成员修饰符的更多相关文章
- python - 类成员修饰符
在java,c#类的成员修饰符包括,公有.私有.程序集可用的.受保护的. 对于python来说,只有两个成员修饰符:公有成员,私有成员 成员修饰符是来修饰谁呢?当然是修饰成员了.那么python类的成 ...
- Python面向对象(成员修饰符)
day25 成员修饰符 class Foo: def __init__(self, name, age): self.name = name self.__age = age#私有,外部无法直接访问 ...
- Python:Day25 成员修饰符、特殊成员、反射、单例
一.成员修饰符 共有成员 私有成员,__字段名,__方法 - 无法直接访问,只能间接访问 class Foo: def __init__(self,name,age): self.name = nam ...
- Python面向对象之成员修饰符
对于这些类成员有修饰符 之前定义字段country任何对象都可以访问,是公有的 可以定义为私用属性,只有类内部的方法可以调用,外部不能直接调用,但是可以间接调用 vim day7-10.py #!/u ...
- Python学习 :面向对象 -- 成员修饰符
成员修饰符 两种成员 - 公有成员 - 私有成员, __字段名 - 无法直接访问,只能通过内部方法来间接访问私有成员 简例:公有成员与私有成员 class Info: country = '中国' ...
- Python学习:17.Python面向对象(四、属性(特性),成员修饰符,类的特殊成员)
一.属性(特性) 普通方法去执行的时候,后面需要加括号,特性方法执行的时候和静态字段一样不需要不需要加括号. 特性方法不和字段同名. 特性方法不能传参数. 在我们定义数据库字段类的时候,往往需要对其中 ...
- Python菜鸟之路:Python基础-类(2)——成员、成员修饰符、异常及其他
三大成员 在Python的面向对象中,主要包括三大成员:字段.方法.属性 字段 类成员的字段又可分为普通字段.静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同,代码示例如下: ...
- python学习day20 面向对象(二)类成员&成员修饰符
1.成员 类成员 类变量 绑定方法 类方法 静态方法 属性 实例成员(对象) 实例变量 1.1实例变量 类实例化后的对象内部的变量 1.2类变量 类中的变量,写在类的下一级和方法同一级. 访问方法: ...
- python_way,day8 面向对象【多态、成员--字段 方法 属性、成员修饰符、特殊成员、异常处理、设计模式之单例模式、模块:isinstance、issubclass】
python_way day8 一.面向对象三大特性: 多态 二.面向对象中的成员 字段.方法属性 三.成员修饰符 四.特殊成员 __init__.__doc__.__call__.__setitem ...
随机推荐
- Java课程作业之动手动脑(三)
1.以下代码为何无法通过编译?哪儿出错了? 在Foo类中已经有了一个Foo的含参构造方法,所以在定义Foo类对象时不能使用new Foo()方法.在Foo类中再写一个无参构造方法,就能编译了. 如果类 ...
- 使用Hexo + Github Pages搭建个人独立博客
使用Hexo + Github Pages搭建个人独立博客 https://linghucong.js.org/2016/04/15/2016-04-15-hexo-github-pages-blog ...
- uva-10714-贪心
题意:有一条杆,长度为L,上面很几只蚂蚁,蚂蚁的朝向未知,爬速1cm/s,在爬行过程中,蚂蚁相撞了就往反方向爬,问,杆上没有蚂蚁至少要多久,至多要多久 解题思路: 蚂蚁1和蚂蚁2相撞,我们只要交换一下 ...
- 浮动ip cz
- Java序列化对象-字符串转换
package com.test; import com.alibaba.fastjson.JSON; import org.junit.Test; import java.io.ByteArrayI ...
- EA Data Modeling 显示别名设置
1.设置 2.效果
- iOS基础知识之属性及属性关键字
iOS属性及属性关键字 一.属性功能:1.给现有的成员变量生成一对setter/getter方法.2.如果没有声明成员变量,自动声明一个_属性名的私有变量(默认的成员变量是受保护的). 二.属性关键字 ...
- gulp 添加版本号 解决浏览器缓存问题
分别安装gulp-rev.gulp-rev-collerctor.gulp-asset-rev,安装了的略过 npm install gulp-rev --save-dev npm install g ...
- nginx 代理跨域
跨域 nginx设置http{ add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Headers X- ...
- ubuntu-14.04中/boot分区不足的解决办法
环境:ubuntu-kylin 或者 ubuntu-14.04,/boot单独分区工具:ubuntu的liveCD. 问题: 由于当初安装的时候,看网上说/boot很小,100M足以,于是单独分区,分 ...