Python类中的成员可见性

本文介绍了Python中如何使用双下划线前缀实现类成员的私有化,并通过实例展示了私有成员名称的修改规则及如何从外部访问这些成员。
Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~
https://blog.csdn.net/xiaoduan_/article/details/80904158

Python类中的成员可见性

成员的可见性在其他语言中也都有体现,
Python也不例外的提供了类似的功能,
但是Python与其他语言稍有不同,这里做一下记录
Python设置 成员变量和方法 为私有的为
私有的方式为 在变量名之前加两个下划线__
但是被设为私有属性的成员还是方法都可以在类的外部强制调用,
可以看下面这个例子

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Author  : Anthony_Duan
# @Time    : 30/06/2018 12:24
# @File    : classtest.py
# @Software: PyCharm

class Student:
    def __init__(self,name,age,score):
        self.name = name
        self.__age = age
        self.__score = score
        self.__re_set_score(0)

    def get_age(self):
        return self.__age

    def __re_set_score(self, score):
        self.__score = score
        return self.__score

if __name__ == '__main__':

    stu = Student("anthony",20,80)
    print(stu.name) # anthony
    print(stu.get_age()) # 20
    # print(stu.__age)
    print(stu.__dict__)   #{'name': 'anthony', '_Student__age': 20, '_Student__score': 0}

    print(stu._Student__age)   # 20
    print(dir(stu))  #['_Student__age', '_Student__re_set_score', '_Student__score',  'get_age', 'name']
    print(stu._Student__re_set_score(30)) # 30

通过 stu.__dict__dir(stu)这两个内置的函数可以查看到stu对象的所有数据成员和方法,
可以看到,被修饰为私有的成员的名字已经被改变,
改变的规则是 _+类名+原本的私有名。
例如原本的__age变成了_Student__age。在外部用变更后的名字依旧可以访问私有的数据成员或者私有方法。
可见Python的成员可见性就是通过改变原名字而起到保护性。

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值