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 ...
随机推荐
- android开发 写一个自定义形状的按键
步骤: 1.在drawable 文件夹中创建一个xml布局文件. 2.修改布局文件 3.在需要使用背景的按键中导入布局. 创建布局文件: 修改布局文件: <?xml version=" ...
- linux环境下redis数据库的安装|配置|启动
安装 下载:打开redis官方网站,推荐下载稳定版本(stable) 解压 tar zxvf redis-3.2.5.tar.gz 复制:推荐放到usr/local目录下 sudo mv -r red ...
- kvm云主机使用宿主机usb设备
有些时候KVM客户机还是要使用USB设备,比如USB密钥等 KVM命令行参数 -usb 打开usb驱动程序,启动客户机usb支持-usbdevice devname 为客户机增加usb设备,devna ...
- 《汇编语言 基于x86处理器》第十章 - 运行一个 16位实地址汇编程序
▶ 书上第 10 章,主要讲了宏,引用了一个 16 位实地址的程序,从代码开始到运行 ● 代码 ; main.asm INCLUDE Macros.inc IF IsDefined( RealMode ...
- leetcode984
public class Solution { private string M1(int A, int B) { StringBuilder sb = new StringBuilder(); ; ...
- jsp不解析el表达式,不识别jstl标签,找不到http://java.sun.com/jsp/jstl/core
问题描述: jsp页面中el表达式,例如:${pageContext.request.contextPath},原样呈现,未被解析. 解决方案: 为jsp页添加page指令如下: <%@ pag ...
- 跟我一起学Python-day1(条件语句以及初识变量)
通过练习题来学习条件语句 1,使用while循环输出1 2 3 4 5 6 8 9 10 n=1 while n<11: if n=7: pass else: print(n) n=n ...
- netty ChannelOption
项目中用到很多netty,配置了各种不同的ChannelOption优化项,不同的配置对于在高并发情况下的性能有不小的影响 首先看下全部项目,参考下这篇文章,虽然不全 https://www.cnbl ...
- c++复习:STL之理论基础
1 STL(标准模板库)理论基础 1.1基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之 ...
- C# 泛型可能导致的装箱操作陷阱
代码如下,已解释 public bool TryGetValue(K key, out V value) { //注意这里,如果key是普通值类型,如int,key == null的判断会导致int的 ...