zoukankan      html  css  js  c++  java
  • Python-"私有"属性

    Python属性访问的软限制

    不同于JAVA,Python中并不限制属性访问,也没有private修饰符,访问限制一靠自觉,二靠对属性名的修改。

    这里整理常见属性名写法:

    class Person:
    
        def __init__(self):
            #  公有属性,可以访问
            self.name = 'ming'
            #  表示不建议访问,但可以访问                    
            self._age = 20         
            #  表示强烈不建议访问并偷偷将属性名修改为 _Person__gender, 规律是加上{_类名}前缀,所以只要知道真实名称,依然可以访问                
            self.__gender = 'male' 
            #  表示这是内置特殊属性或者特殊方法,比如 __init__, __dict__等,但依然可以定义自有属性,和_age一样可以访问         
            self.__hello__ = 'hello'                
    
    # 子类访问方式和父类一样
    class Student(Person):                     
        pass
    

    尝试访问一下:

    print(person.name)
    print(person._age)
    print(person._Person__gender)
    print(person.__hello__)
    
    print(student.name)
    print(student._age)
    print(student._Person__gender)
    print(person.__hello__)
    
    # 结果
    ming
    20
    male
    hello
    ming
    20
    male
    hello
    

    访问没有问题,然后看一下实际的属性名称:

    print(person.__dict__)
    print(student.__dict__)
    
    # 结果
    {'name': 'ming', '_age': 20, '_Person__gender': 'male', '__hello__': 'hello'}
    {'name': 'ming', '_age': 20, '_Person__gender': 'male', '__hello__': 'hello'}
    

    从上述结果可以看出,Python并不会限制你干什么,只是建议或者约定一个合理的做法,至于是否遵守,全看开发者心情。

  • 相关阅读:
    立 Flag
    ASP.NET Core 3.0 一个 jwt 的轻量角色/用户、单个API控制的授权认证库
    C# Xamarin 数据绑定入门基础
    C# HttpClient 请求认证、数据传输笔记
    【PHP篇】输出方法
    【PHP篇】变量与常量
    C语言小笔记
    树莓派GPIO口的使用
    树莓派连接不上WiFi
    OLED屏幕详细使用(CC2530 & 51)
  • 原文地址:https://www.cnblogs.com/Peter2014/p/11275031.html
Copyright © 2011-2022 走看看