Python面向对象之私有方法(4)
类里面有很多成员修饰符,用来修饰各种属性
(1)私有属性,只有内部的方法可以访问
class Foo:
xo = 'xo'#表明是公共的,内部外部都可以访问
__ox = '私有属性'#私有属性,只有内部方法可以访问
def __init__(self):
self.__name = 'Jay'#私有属性,只有内部方法可以访问
def fetch(self,bk):
print(bk) print(Foo.__ox)#里面也可以写self.__ox
#print(Foo.__xo)#前面加了两个下划线,是私有属性,这样调用会报错,只有内部的方法可以访问
obj=Foo()
obj.fetch('bb')
结果如图,

如果子类继承了父类Foo,在子类的方法里面调用了父类的私有属性,也是访问不了的,会报错

如果在方法前面加了两个下划线也是不能被实例访问的,只能间接访问
class Foo:
xo = 'xo'#表明是公共的,内部外部都可以访问
__ox = '私有属性'#私有属性,只有内部方法可以访问
def __init__(self): self.__name = 'Jay'#私有属性,只有内部方法可以访问
def __fetch(self,bk):#私有方法
print(bk)
print(Foo.__ox)#里面也可以写self.__ox
def fetch(self):
self.__fetch('bob') obj= Foo()
#print(obj.__fetch)这样会报错,这是私有方法
obj.fetch()
结果如图

私有属性也有一种特殊方法在外面访问
class Foo:
xo = 'xo'#表明是公共的,内部外部都可以访问
__ox = '私有属性'#私有属性,只有内部方法可以访问
def __init__(self): self.__name = 'Jay'#私有属性,默认只有内部方法可以访问
def __fetch(self,bk):#私有方法
print(bk)
print(self.__ox)#里面也可以写self.__ox
def fetch(self):
self.__fetch('bob') obj= Foo()
print(obj._Foo__name)#引用内部方法的特殊语法
这样就可以访问私有属性了,但这种方法不建议
Python面向对象之私有方法(4)的更多相关文章
- Python面向对象05 /私有成员、类方法、静态方法、属性、isinstance/issubclass
Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubclass 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/is ...
- Python面向对象之私有属性和方法
私有属性与私有方法 应用场景 在实际开发中,对象的某些属性或者方法 可能只希望在对象的内部被使用,而不希望在外部被访问到: 私有属性 就是对象不希望公开的属性: 私有方法 就是对象不希望公开的方法: ...
- Python面向对象之私有属性和私有方法
01. 应用场景及定义方式 应用场景 在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到 私有属性 就是 对象 不希望公开的 属性 私有方法 就是 对象 ...
- python 面向对象、特殊方法与多范式、对象的属性及与其他语言的差异
1.python 面向对象 文章内容摘自:http://www.cnblogs.com/vamei/archive/2012/06/02/2532018.html 1.__init__() 创建对 ...
- Python面向对象之内置方法
1.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 issubclass(sub, s ...
- python为什么有私有方法和变量
1. 访问安全,其实也没有决定的安全 >>> class humer(object): ... def __init__(self, name): ... self.name = n ...
- Python面向对象之魔术方法
__str__ 改变对象的字符串显示.可以理解为使用print函数打印一个对象时,会自动调用对象的__str__方法 class Student: def __init__(self, name, a ...
- Python面向对象 | 双下方法
定义:双下方法是特殊方法,他是解释器提供的.由双下划线+方法名+双下划线 .它具有特殊意义的方法,双下方法主要是python源码程序员使用的,我们在开发中尽量不要使用双下方法,但是深入研究双下方法,更 ...
- Python 面向对象(二) 特殊方法
一些Python特殊方法的汇总 __bases__ 类的基类,返回元祖__base__ 类的基类,也叫父类__call__ '类名()',类名加括号调用时执行的语句__class__ 对象或类 ...
随机推荐
- LeetCode Merge Sorted Array 合并已排序的数组
void merge(int A[], int m, int B[], int n) { int *a=A,*b=B; ,j=; ||m==){ //针对特殊情况,比如A或B中无元素的情况 & ...
- 在vue-cli中引入外部插件
一.可以用npm下载的 现在以jquery为例子: 1 先在package.json中的dependencies中写入“jquery”:“^3.2.1”(jquery版本) 2 在npm中搜索jque ...
- POJ 2229 Sumsets(递推,找规律)
构造,递推,因为划分是合并的逆过程,考虑怎么合并. 先把N展开成全部为N个1然后合并,因为和顺序无关,所以只和出现次数有关情况有点多并且为了避免重复,分类,C[i]表示序列中最大的数为2^i时的方案数 ...
- SpringBoot操作MongoDB实现增删改查
本篇博客主讲如何使用SpringBoot操作MongoDB. SpringBoot操作MongoDB实现增删改查 (1)pom.xml引入依赖 <dependency> <group ...
- 注册Windows service及其相关
注册Windows service,.net写的 net stop "xxxxxx""%SYSTEMROOT%\Microsoft.NET\Framework\v2.0. ...
- Softmax回归(Softmax Regression
多分类问题 在一个多分类问题中,因变量y有k个取值,即.例如在邮件分类问题中,我们要把邮件分为垃圾邮件.个人邮件.工作邮件3类,目标值y是一个有3个取值的离散值.这是一个多分类问题,二分类模型在这里不 ...
- C#关系运算符
一.C#关系运算符 C#语言的关系运算符是对操作数的比较运算. 二.示例 using System;using System.Collections.Generic;using System.Linq ...
- C#的接口基础教程之六 接口转换
C#中不仅支持.Net 平台,而且支持COM平台.为了支持 COM和.Net,C# 包含一种称为属性的独特语言特性.一个属性实际上就是一个 C# 类,它通过修饰源代码来提供元信息.属性使 C# 能够支 ...
- oracle数据库删除表时遇见需要解锁问题
今天在进行数据清空时,不注意把表锁住了,记录一下解锁过程. 第一步执行 select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked ...
- 井字游戏 人机对战 java实现
package com.ecnu.Main; /** * 主函数触发游戏 */public class MainApplication { public static void main(String ...