Python中的私有属性和私有方法

首先来比较一下java中的各种修饰符的访问权限

当前类同包 子孙类其它包
public
private×××
protected×
friendly××
看看python中的定义

(1)在python 中可以通过在属性变量名前,加上双下划线定义属性为私有属性

(2)特殊变量命名

a. _xx 以单下划线开头的表示的是protected(受保护的) 类型的变量,即保护类型只能靠允许其本身与子类进行访问。若内部变量表示,如:当使用“from M import” 时,不会将一个下划线开头的对象引入。

b.__xx 双下划线的表示的是私有类型的变量。只能允许这个类本身进行访问了,连子类也不可以用于命名一个类属性(类变量),调用时名字被改变(在类 FooBar 内部,__boo 变成 __FooBar__boo,如self.__FooBar__boo)
实例:
单下划线与java中protected的属性一致,即可以访问的有当前类,同包,子孙类
python的同包可以理解为同一文件夹中,即此文件夹中有文件init.py文件
子孙类则是继承父类的类
class A():
_name=‘xiaomo’
__sex=‘male’
def say(self):
print self._name
print self.__sex
def get_gender(self):
return self.__sex
a = A()
print a._name
结果是xiaomo
print a.__sex
结果是AttributeError: A instance has no attribute ‘__sex’,直接调用获取sex属性是禁止的
因为他只允许在classA中调用,想要调用时,必须引用get_gender方法
print a.get_gender()
结果是male
class B(A):
favourite=“football”
def get_interesting(self):
return self.favourite
b=B()
print b._name
结果是xiaomo,protected的属性允许子类使用
常用私有变量获取
print dir(a)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值