python 私有属性_Python 私有属性和私有方法

类的私有属性和方法

Python是个开放的语言,默认情况下所有的属性和方法都是公开的 或者叫公有方法,不像C++和 Java中有明确的public,private 关键字来区分私有公有。

Python默认的成员函数和成员变量都是公开的,类的私有属性指只有在类的内部使用的属性或方法,表现形式为以“__“ 属性名或方法名以双下划线开头。

class Test(object):

__count = 0 # 私有属性 __count

def get_count(self):

return self.__count # 类的内部可以使用私有属性

def set_count(self, value):

if self.__check_value(value): # 在类的内部调用类的私有方法

self.__class__.__count = value

def __check_value(self, value): # 定义类的私有方法 检查参数

if isinstance(value, int):

return True

a = Test()

print(a.get_count())

a.set_count(100)

print(a.get_count())

#a.__check_value(10) # 调用私有方法会报错

#print(a.__count)# 直接访问私有属性也会报错

应用场景

对于一些敏感的数据,我们不希望直接被的函数调用,或者不希望草率的直接object.key = value 来修改,我们可以选择将属性声名为私有的,这样从外部时无法访问该属性的,也就不能修改了,但是依然可以修改属性字典的方法来修改。

# 当然 可以使用 @proprety

class Person(object):

__name = 'Monkey'

def update_name(self, name):

self.__name = name

def get_name(self):

return self.__name

p = Person()

p.update_name('BlackMonkey')

print(p.get_name()) # BlackMonkey

print(p.__name) # 报错 AttributeError: 'Person' object has no attribute '__name'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值