精华内容
下载资源
问答
  • python私有变量
    2020-11-21 02:13:55

    学过编程语言的人员,都知道私有变量在编程中必不可少,与Java和C语言用private关键字定义私有变量不同,Python是在变量前面加上双横杠(例如:__test)来标识,

    Python私有变量只能在类内部使用,不被外部调用,且当变量被标记为私有后,调用时需再变量的前端插入类名,在类名前添加一个下划线,即“_ClassName__变量名”形式。

    Python私有变量或方法在自身类中不能直接调用,需通过在类中定义接口,实现私有变量的引用、读取和修改。

    除了Python私有变量是使用“_”定义之外,还有两种特殊变量,分别是:

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

    2. __xx__定义的是特列方法。用户控制的命名空间内的变量或是属性,如init , __import__或是file 。只有当文档有说明时使用,不要自己定义这类变量。

    其实,Python并没有真正的私有化支持,用下划线得到的也是伪私有,因此,在Python编程中应尽量避免使用定义以下划线开头的变量!

    更多相关内容
  • Python私有变量与私有方法

    python的私有化是为了规划私有属性,避免非相关的访问【假如!我有老婆,你不能直接知道我老婆是谁,你只有问我才会知道,即我的私有属性只有我知道】

    在python中定义私有变量和私有方法只需要在变量名或函数名前加上 "__"两个下划线

    在这里插入图片描述
    在类内部的方法中使用时 self.__变量名或函数名。
    在这里插入图片描述
    实际上,如果真要访问私有变量和私有方法,也是可以访问的,因为实际上私有化的操作只是将变量或函数名更改了而已:

    • 下例中由private_value变为了_A__private_value【即_类名__属性名】,但为了保持私有性,不建议直接使用这种方法访问
      在这里插入图片描述
    '''
    学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    
    class A:
        _private=6
        __private_value=5
        def __private_func(self):
            print("hello")
        def get_private_value(self):
            return self.__private_value
    a=A()
    # print(a.__private_value)###报错,找不到该属性
    print(a.get_private_value())
    print(a._A__private_value)
    

    私有化变量和方法的继承:【子类不会继承基类私有属性,但仍然通过基类的函数来获取或可以强行访问】

    class A:
        _private=6
        __private_value=5
        def __private_func(self):
            print("hello")
        def get_private_value(self):
            return self.__private_value
    class B(A):
        pass
    b=B()
    # print(b.__private_value)#报错
    print(b.get_private_value())#可以使用父类的方法来获取私有属性
    print(b._A__private_value)#强制访问还是可以的
    
    展开全文
  • Python私有变量

    2018-02-27 18:36:00
    私有变量表示方法在变量前加上两个下划线的是私有变量。class Teacher(): def __init__(self,name,level): self.__name=name self.__level=level #获取老师的等级 def get_level(self): return self.__level #...

    私有变量表示方法

    在变量前加上两个下划线的是私有变量。

    class Teacher():
        def __init__(self,name,level):
            self.__name=name
            self.__level=level
    
        #获取老师的等级
        def get_level(self):
            return self.__level
    
        #获取名字
        def get_in_name(self):
            return self.__name
    

    动态方法无法读取私有变量

    即使是动态方法也无法读取私有变量,强行读取会报错。

    #定义动态方法
    def get_name(self):
        return self.__name
    
    #动态方法赋值
    Teacher.get_name=get_name
    
    
    t=Teacher("GG",5)
    
    print("level is: ",t.get_level())       #可行
    print("name is",t.get_name())           #报错,显示没有该属性
    
    

    动态方法无法修改私有变量

    动态方法也无法修改私有变量,强行修改不会报错,但是没有效果。

    
    t.set_name("NN")                #实际没有效果但是不报错
    print(t.get_in_name())          #类内部获取名字,输出GG
    

    强行读取和修改私有变量

    那么强行要读取和改变私有变量怎么办呢?
    有一个不推荐但是可行的办法:
    私有属性在对象内部被名字是”类名_属性名”。
    在这个例子里,是这样的:

    print("name is",t._Teacher__name)           #输出GG
    t._Teacher__name="AA"                       #被改变了
    print("name is",t._Teacher__name)           #输出AA
    展开全文
  • 私有变量 私有成员:命名使用双下划线开头。 ·作用:无需向类外提供的成员,可以通过私有化进行屏蔽。·做法:命名使用双下划线开头。 ·本质:障眼法,实际也可以访问。 私有成员的名称被修改为:_类名_成员名,可以...

    私有变量

    • 私有成员:命名使用双下划线开头。
    • ·作用:无需向类外提供的成员,可以通过私有化进行屏蔽。·做法:命名使用双下划线开头。
      ·本质:障眼法,实际也可以访问。
      私有成员的名称被修改为:_类名_成员名,可以通过_dict_属
      性或dir函数查看。
    """
        封装 -- 私有成员
            障眼法:修改了私有变量名称
                本质: __变量名  -->   _类名__变量名
    """
    # 1. 私有化实例变量
    # 2. 提供两个公开的读写方法
    
    class Wife:
        def __init__(self, name="", age=0):
            self.name = name
            # self.__age = age
            self.set_age(age)
    
        def get_age(self):
            return self.__age
    
        def set_age(self, value):
            if 20 <= value <= 50:
                self.__age = value
            else:
                raise Exception("我不要")
    
    
    w01 = Wife("宁宁", 25)
    w02 = Wife("铁锤", 26)
    w01.set_age(27)
    print(w01.get_age())
    
    w01.__age = 100
    # print(w01.__age)# 私有化
    print(w01.__dict__)#查看当前有的实例变量
    print(w01._Wife__age)# ????
    
    
    """
        封装 -- 标准属性
            作用:保护实例变量
    """
    
    
    # 1. 创建实例变量
    # 2. 提供两个公开的读写方法(对self.age)
    # 3. 使用@property修饰读取方法
    #    使用@属性名.setter修改写入方法
    
    class Wife:
        def __init__(self, name="", age=0):
            self.name = name
            self.age = age
    
        @property# 创建property对象,自动绑定下面方法(读取)
        def age(self):
            return self.__age
    
        @age.setter# 自动绑定下面方法(写入)
        def age(self, value):
            if 20 <= value <= 50:
                self.__age = value
            else:
                raise Exception("我不要")
    
    
    w01 = Wife("宁宁", 25)
    w01.age = 27
    print(w01.age)
    print(w01.__dict__)
    
    
    """
        封装 -- 属性
    """
    # 1. 创建实例变量
    # 2. 提供两个公开的读写方法
    # 3. 创建类变量存储property对象
    
    class Wife:
        def __init__(self, name="", age=0):
            self.name = name
            # self.set_age(age)
            self.age = age
        
        def get_age(self):
            return self.__age
    
        def set_age(self, value):
            if 20 <= value <= 50:
                self.__age = value
            else:
                raise Exception("我不要")
        # @property
        # def get_age(self):
        #     return self.__age
        # @get_age.setter
        # def age(self, value):
        #     if 20 <= value <= 50:
        #         self.__age = value
        #     else:
        #         raise Exception("我不要")
    
        # 类变量
        # property 作用:拦截
        age = property(get_age, set_age)
    
    
    w01 = Wife("宁宁", 25)
    w02 = Wife("铁锤", 26)
    # w01.set_age(27)
    w01.age = 27
    print(w01.age)
    print(w01.__dict__)
    
    

    @property

    • 公开的实例变量,缺少逻辑验证。私有的实例变量与两个公开的方法相结合,又使调用者的操作略显复杂。而属性可以将两个方法的使用方式像操作变量一样方便。
    • 通常两个公开的属性(读、写),保护一个私有的变量。@property负责读取,@属性名. setter负责写入只写:属性名= property(None,写入方法名)

    在这里插入图片描述
    可以运行运行上面的代码体会一下

    展开全文
  • python私有变量

    2019-05-02 12:06:18
    python中定义私有变量只需要在变量名或函数名前加上 ”__“两个下划线,那么这个函数或变量就是私有的了。 在内部,python使用一种 name mangling 技术,将 __membername替换成 _classname__membername,也就是说...
  • 私有变量表示方法 在变量前加上两个下划线的是私有变量。 class Teacher(): def __init__(self,name,level): self.__name=name self.__level=level #获取老师的等级 def get_level(self): return self.__...
  • Python中,变量名类似__x__的,以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的(比如 __doc__, __init__等),不是private变量,所以,不能用__name__、__sex__这样的变量名定义私有...
  • 女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页 >高级搜索 浅谈 python 中的 私有 变量 私有 ...
  • python中的私有变量
  • python中定义私有变量只需要在变量名或函数名前加上 ”__“两个下划线,那么这个函数或变量就是私有的了。在内部,python使用一种 name mangling 技术,将 __membername替换成 _classname__mem...
  • python基础学习-公有变量与私有变量

    千次阅读 2021-10-11 09:22:49
    Python中定义私有变量只需要在变量名或函数名前加上两个下划线"_",那么这个函数或变量就会为私有的了。 无法直接访问私有变量 # 私有变量,通过添加两个下划线定义 class Person: __name = '人名' p = Per
  • python类的私有变量

    2020-12-15 11:52:27
    1.类的私有变量和私有方法1)_xx 以单下划线开头的表示的是protected类型的变量。即保护类型只能允许其本身与子类进行访问。若内部变量标示,如:当使用“from Mimport”时,不会将以一个下划线开头的对象引入。2)__...
  • Python 私有变量

    2018-03-22 12:22:26
    私有变量表示方法  在变量前加上两个下划线的是私有变量。 class Teacher(): def __init__(self,name,level): self.__name=name self.__level=level #获取老师的等级 def get_level(self): return self._...
  • python中继承时,私有变量出现以下错误:AttributeError: 'dog' object has no attribute '_dog__name'我找了很多东西,但不知道我的问题在哪里class animal(object):__name = ""__height = ""__weight = ""__...
  • 本篇我们介绍封装(encapsulation)的概念,以及如何在 Python 中利用私有属性实现封装。封装是将数据和方法打包成一个类,从而隐藏信息和限制外部访问。按照惯例,单下划线前缀的属性被视为私有属性。Python 会对双...
  • 原作者:https://www.cnblogs.com/ldw3432/p/8336571.html
  • Python私有变量解析

    2020-12-22 17:43:55
    这篇文章主要为大家详细介绍了Python私有变量解析,具有一定的参考价值,可以用来参考一下。对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧!私有变量表示方法在变量前加上两个...
  • Python类中的私有变量和公有变量

    千次阅读 2020-07-30 14:20:25
    我们这里就直奔主题,不做基础铺垫,默认你有一些Python类的基础,大家在看这篇博客的... __c = 300 #私有变量 __d__ = 400 #公有变量 a = A() #实例化一个对象a print(a.a,a._b,a.__c,a.__d__) #打印四个变量的值 运
  • python私有变量

    千次阅读 2019-06-13 18:00:15
    在看python代码的时候,有时候会发现有的变量或者函数前面会加入“_”(一个杠)或者“__”(两个杠)来表示变量私有,出于好奇,在网上找了很多说法并结合自己实际操作,简单记录一下这方面的内容。 1. 与类无关...
  • [Python]Python中的私有变量
  • 首先我们这里先描述下: Python中,变量名类似__x__的,以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的(比如 __doc__, __init__等),...我们看个例子:访问python私有变量: class
  • python中定义私有变量只需要在变量名或函数名前加上 ”__“两个下划线,那么这个函数或变量就是私有的了。在内部,python使用一种 name mangling 技术,将 __membername替换成 _classname__mem...
  • Python私有变量的定义和用法

    千次阅读 2019-10-12 16:01:19
    为什么设计私有变量 大多数 Python 代码都遵循这样一个约定:带有一个下划线的名称 (例如: _spam) 应该被当作是 API 的非公有部分 (无论它是函数、方法或是数据成员)。 为了保证对于类私有成员的有效使用(例如...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,602
精华内容 22,640
关键字:

python私有变量

友情链接: FreeImage.rar