python类属性定义_菜鸟世界 -聊一聊python的类属性访问权限

1、 访问权限

像C++ ,Java这类面向对象语言,对于类的属性和方法,有着明确的访问权限控制,分为三个级别

1、 private

2、 protected

3、 public

三个访问权限,一个比一个高,在C++里,子类里会把protected降级为private

之所以设计这种权限控制,目的是为了在一个庞大的系统中控制好权限,否则,某个类的对象的属性可以随意被外部调用者修改,那么当出现意外时,根本无从查找是谁修改了它,把权限收紧,可以达到高内聚的,松耦合的目的

那么在python里,是如何做访问权限控制的呢?

2、 python的约定

python并没有那么完善的权限控制,不存在private , protected,public这类关键字,它有自己的方法

下面是一个类的定义

# coding=utf-8

class MyClass(object):

def __init__(self):

self.age = 20

self._age = 21

self.__age = 22

三个变量,注意看变量名前面的下划线

下面是一个使用的例子

mc = MyClass()

print mc.age

print mc._age

print mc.__age

执行这段代码,第三行打印语句会报错,提示没有 __age这个属性,此外,像pycharm这样的编辑器还会提示你,_age属性是一个protected的

这个例子阐述了python中对于属性的访问权限控制机制,如果变量名前加一个下划线,那么这个变量是protected的,按理说是受到保护的,外部不应该修改,但是,这只是一个约定,实际上你可以对_age进行修改, 如果一个变量名前加了两个下划线,那么这个变量就是private的,在类的外部根本无法访问得到

现在演示一下在类的内部使用的例子

# coding=utf-8

class MyClass(object):

def __init__(self):

self.age = 20

self._age = 21

self.__age = 22

def print_age(self):

print self.age

print self._age

print self.__age

mc = MyClass()

mc.print_age()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值