精华内容
下载资源
问答
  • python类的私有变量
    2020-12-15 11:52:27

    1.类的私有变量和私有方法

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

    2)__xx 双下划线的表示的是私有类型的变量。只能允许这个类本身进行访问了,连子类也不可以用于命名一个类属性(类变量),调用时名字被改变(在类FooBar内部,__boo变成_FooBar__boo,如self._FooBar__boo)

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

    4)python默认的成员函数和成员变量都是公开的,没有像其他类似语言的public,private等关键字修饰。但是可以在变量前面加上两个下划线"_",这样的话函数或变量就变成私有的。 **情况就是当变量被标记为私有后,在变量的前端插入类名,在类名前添加一个下划线"_",即形成了_ClassName__变量名.**

    Python内置类属性

    __dict__ : 类的属性(包含一个字典,由类的数据属性组成)

    __doc__: 类的文档字符串

    __module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__等于 mymod)

    __bases__: 类的所有父类构成元素(包含了一个由所有父类组成的元组)

    例子:

    classStudent(object):

    _name ="huang"

    __sex ="male"

    defhello(self):

    print(self._name)

    print(self.__sex)

    defget_value(self):

    returnself.__sex

    a = Student()

    print(a.hello())

    print(a.get_value())

    结果:

    huang

    male

    None

    male

    更多相关内容
  • 在这里强调说一下私有变量,python默认的成员函数和成员变量都是公开的,没有像其他类似语言的public,private等关键字修饰.但是可以在变量前面加上两个下划线"_",这样的话函数或变量就变成私有的.这是python私有变量...
  • Python类私有变量

    2019-06-04 23:37:32
    此内容相对简单,仅在使用子类过程中,注意私有变量的特性 class Person(object): __name='Foo' # 命名空间变为:_Person__name def __init__(self): self.__age=10 # 命名空间变为:_Person__age def __...

    此内容相对简单,仅在使用子类过程中,注意私有变量的特性

    
    class Person(object):
    
        __name='Foo' # 命名空间变为:_Person__name
    
        def __init__(self):
            self.__age=10  # 命名空间变为:_Person__age
    
        def __height(self): # 命名空间变为:_Person__height
            print('form',self.__class__.__name__)
    
            return '180cm'
    
        def outside_access(self): # 类内部访问类的私有方法或者私有数据属性
            print('form',self.__class__.__name__)
            return self.__height()
    
    print(Person.__dict__)
    '''
    {'_Person__name': 'Foo', '__doc__': None, '__module__': '__main__',
     '__dict__': <attribute '__dict__' of 'Person' objects>, '__weakref__': <attribute '__weakref__' of 'Person' objects>, 
     '__init__': <function Person.__init__ at 0x1143171e0>, 
     '_Person__height': <function Person.__height at 0x114317268>, 
     'outside_access': <function Person.outside_access at 0x1143172f0>}
    
    '''
    p=Person()
    
    # print(p.__name) # Person' object has no attribute '__name'
    # print(p.__height) # Person' object has no attribute '__height'
    
    """
    Python 为何要在类私有变量前加上类名作为变量名称
    目的:当子类覆盖父类时,保证了子类的同名私有变量_subclass__Foo不会覆盖同名的_parentclass__Foo
    或者说:父类不想让子类覆盖自己的方法,可通过将方法私有化达到目的,这个子类指:同一模块内的方法,或被引入到其他模块当中的子类
    """
    
    
    class SubPerson(Person):
        def __height(self):
            return '170cm'
    
        def outside_access(self): # 类内部访问类的私有方法或者私有数据属性
            print('form',self.__class__.__name__)
            return self.__height()
    
    s=SubPerson()
    print(s._Person__height())
    # 打印结果:180cm
    print(s._SubPerson__height())
    # 打印结果:170cm
    # 说明父类__height方法与子类的_height完全独立
    
    print(s.outside_access())
    """
    打印结果:
    form SubPerson
    170cm
    显然父类非私有方法已被子类覆盖
    """
    

     

    展开全文
  • 1.私有变量:class A(object):_name='ling'__sex='F'def hello(self):print(self._name)通过在属性变量名前加上双下划线定义属性为私有属性;1._XX以单下划线开头的表示的是protected类型的变量,即保护类型只能...

    1.类的私有变量:

    class A(object):

    _name='ling'

    __sex='F'

    def hello(self):

    print(self._name)

    通过在属性变量名前加上双下划线定义属性为私有属性;

    1._XX以单下划线开头的表示的是protected类型的变量,

    即保护类型只能允许其本身与子类进行访问。

    若内部变量标示,如:当使用"from M import"时,

    不会将以一个下划线开头的对象引入;

    2.__XX双下划线的表示的是私有类型的变量。只能允许

    这个类本身进行访问了,连子类也不可以用于命名

    一个类属性(类变量),调用时名字被改变

    3.__XX__定义的是特列方法.

    python内置类属性:

    __dict__:类的属性(包含一个字典,由类的数据属性组成)

    __doc__:类的文档字符串

    2.类的重写

    class parent(object):

    name = 'parent'

    sex = 'F'

    coller = 'yellow'

    language = 'chinese'

    def __init__(self):

    print 'my name is {0}'.format(self.name)

    def get_sex(self):

    return self.name

    a = parent()

    a.get_sex()

    print '#'*15

    class child(object):

    name = 'child'

    coller = 'yellow'

    def __init__(self):

    print 'my name is {0}'.format(self.name)

    def get_coller(self):

    return self.coller

    b = child()

    print b.get_coller()

    print '#'*15

    class grandson(parent,child):

    name = 'grandson'

    def __init__(self):

    print 'my name is {0}'.format(self.name)

    def get_coller(self):

    return self.coller

    def get_language(self):

    return self.language

    #类的重写,只需要重新定义变量,直接打印

    def get_name(self):

    print 'my name is xiaoming'

    c = grandson()

    print c.get_coller()

    print c.get_language()

    c.get_name()

    tips:

    __init__ 是每个类的默认方法,如果子类想继承父类的__init__ 方法,需要用supper(子类,self)。子类把父类方法重写的时候,会默认忽略父类中的 return

    格式:子类想继承__init__

    supper(子类名称,self).__init__(有参数就跟参数)

    print '$$$$$$$ '   //使用supper函数,会忽略父类中的return,直接执行子类中

    supper下的一些方法逻辑,所以直接用print 打出来

    格式: 子类想继承父类中的其他方法

    supper(子类名称,self).父类中的方法    //没参数就跟父类中的方法名

    print '#######'     // 使用supper函数,会忽略父类中的return

    展开全文
  • python基础学习-公有变量与私有变量

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

    1、公有变量

    默认上来说对象的属性和方法都是公开的,我们可以通过点这个操作符进行访问

    # 公有的属性和方法通过点操作符访问
    class Person:
      name = '人名'
    p = Person()
    print(p.name)
    

    在这里插入图片描述

    2、私有变量

    在Python中定义私有变量只需要在变量名或函数名前加上两个下划线"_",那么这个函数或变量就会为私有的了。

    无法直接访问私有变量

    # 私有变量,通过添加两个下划线定义
    class Person:
      __name = '人名'
    p = Person()
    
    
    # 无法从外部进行访问
    print(p.__name)
    

    在这里插入图片描述

    调用方法返回内部属性
    这里把person当中的name属性私有化后,我们无法在外部访问这个属性,我们可以通过调用方法,返回类的属性,从内部进行访问。

    # 私有变量,通过添加两个下划线定义
    class Person:
      __name = '人名'
      # 添加方法从内部进行访问
      def getPivateName(self):
        return self.__name
    p = Person()
    
    
    # # 无法从外部进行访问
    # print(p.__name)
    
    # 通过调用方法从内部访问name属性
    print(p.getPivateName())
    
    

    在这里插入图片描述

    名字改编
    但其实python内部采用了一种叫 name mangling(名字改编)的技术,把双下划线开头的变量进行改名。实际上在外部使用“_类名__变量名“即可访问双下划线开头的私有变量了

    # 私有变量,通过添加两个下划线定义
    class Person:
      __name = '人名'
      # 添加方法从内部进行访问
      def getPivateName(self):
        return self.__name
    p = Person()
    
    
    # # 无法从外部进行访问
    # print(p.__name)
    
    # # 通过调用方法从内部访问name属性
    # print(p.getPivateName())
    
    # 通过名字改编 name mangling 访问内部属性
    print(p._Person__name)
    
    

    在这里插入图片描述
    其实这里的私有机制有一点伪私有的感觉,python的类事实上是没有权限控制的

    展开全文
  • Python类中的 私有变量和私有方法

    千次阅读 2018-04-09 14:07:38
    版权声明:转载请标注出处。... 默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类似public,private等关键词来修饰成员...在python中定义私有变量只需要在变量名或函数名前加上 ”__“两...
  • 参考链接: Python中的私有变量 我们这里就直奔主题,不做基础铺垫,默认你有一些Python类的基础,大家在看这篇博客的时候,如果基础知识忘了,可以去菜鸟教程 从一个简单的开始 class A(): #定义一个 A a ...
  • 私有变量表示方法 在变量前加上两个下划线的是私有变量。 class Teacher(): def __init__(self,name,level): self.__name=name self.__level=level #获取老师的等级 def get_level(self): return self.__...
  • 这篇文章主要介绍了Python类如何定义私有变量,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下前言在java 的中,如果你要定义一个私有变量,可以用修饰词 ...
  • python私有变量可以修改吗

    千次阅读 2020-03-13 13:43:16
    python类中,以__开头的变量是私有变量,以_开头的变量是受保护的变量,不需要用private或者ptotect声明,这一点与C++是不一样的。 在python中,私有变量是可以修改的,来看下面几个例子。 总结一下: 1、...
  • 为什么设计私有变量大多数 Python 代码都遵循这样一个约定:带有一个下划线的名称 (例如: _spam) 应该被当作是 API 的非公有部分 (无论它是函数、方法或是数据成员)。为了保证对于私有成员的有效使用(例如避免名称...
  • python中继承时,私有变量出现以下错误:AttributeError: 'dog' object has no attribute '_dog__name'我找了很多东西,但不知道我的问题在哪里class animal(object):__name = ""__height = ""__weight = ""__...
  • Python私有变量与私有方法
  • python class 私有变量

    2020-12-05 14:06:20
    python中定义私有变量只需要在变量名或函数名前加上”__“两个下划线,那么这个函数或变量就是私有的了。在内部,python使用一种name mangling 技术,将 __membername替换成 _classname__mem...
  • python私有变量

    千次阅读 2019-06-13 18:00:15
    在看python代码的时候,有时候会发现有的变量或者函数前面会加入“_”(一个杠)或者“__”(两个杠)来表示变量私有,出于好奇,在网上找了很多说法并结合自己实际操作,简单记录一下这方面的内容。 1. 与无关...
  • 1、python 私有变量和私有方法 - 考鸡蛋 - 博客园 十九、python多继承以及MRO顺序 - Norni - 博客园
  • Python类中的①私有变量/方法、②静态方法和③方法
  • 这是一个在python类中展示私有变量的演示。您可能知道,python中绝对没有私有变量。您可以实现的最接近的方法是,在诸如__foo之的变量之前使用__运算符。这样,python会自动将变量重命名为_ <\ class-name>...
  • [Python]Python中的私有变量
  • #改造(私有变量) print('='*50) class Person2: def __init__(self,name,age=18): self.name = name self.__age = age def growup(self,inc=1): if 0 self.__age += inc def getage(self): return self._...
  • 本文实例讲述了Python面向对象程序设计之私有变量,私有方法原理与用法。分享给大家供大家参考,具体如下: 私有变量,私有方法: python的私有化是为了规划私有属性,避免非相关的访问【假如!我有老婆,你不能...
  • 公共变量Python不会限制我们访问python程序中的任何变量或调用任何成员方法。默认情况下,所有python变量和方法在Python中都是公共的。因此,当我们要公开任何变量或方法时,我们什么也不做。让我们看下面的例子-...
  • python—真假私有变量

    2021-01-20 03:07:49
    定义私有属性或方法加个__即可(双下划线) 先来定义对象的私有属性(方法一样) class Person(): def __init__(self, name, age): self.name = name self.__age = age def __str__(self): return {},{}.format...

空空如也

空空如也

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

python类的私有变量