python 实例属性之单,双下划线

具体区别看下面例子

 1 class A:
 2     def __init__(self,name=‘Andy‘):
 3         self._name = name
 4
 5 class B:
 6     def __init__(self,name = ‘Jack‘,age=19):
 7         self.__name = name  # 私有属性(变量),只有类对象自己能访问,子类也不能访问
 8         self._age = age     # 保护变量,类,及子类对象可以访问
 9
10 class C(B):
11     def h(self):
12         print(‘hello‘)
13
14 a = A()
15 b = B()
16 c = C()
17 print(a._name)  # 输出Adny
18 print(b._B__name)   # 私有属性在类外的访问方式:对象._类__属性名
19 print(c._age)   # 输出19
20 print(c._C__name)   # AttributeError: ‘C‘ object has no attribute ‘_C__name‘子类不能访问
时间: 2024-11-05 16:32:37

python 实例属性之单,双下划线的相关文章

Python 中的函数的双下划线“__”

Python中最常见的是类中的带有双下滑线的函数是 __init__()最开始只是知道 有初始化的作用,这里从原理上总结一下. 在Python中,由这些名字组成的集合所包含的方法称为特殊方法.如果对象实现了这些方法中的某一个,那么这个方法会在特殊情况下(确切的说是根据名字)被Python调用.而几乎没有直接调用它们的必要. 一.首先讨论__init__(),标准来说它是类的构造方法.当一个对象被创建后,会立即调用构造方法. class Test: def __init__(self): self

python单/双下划线使用

在Python编程中经常会遇到函数(function),方法(method)及属性(attribute)以下划线'_'作为前缀,这里做个总结. 主要存在四种情形: 1 1. object # public 2 2. __object__ # special, python system use, user should not define like it 3 3. __object # private (name mangling during runtime) 4 4. _object #

python 单下划线/双下划线使用总结(转载)

python 单下划线/双下划线使用总结 时间:2013-10-08 10:56来源:www.chengxuyuans.com Python 用下划线作为变量前缀和后缀指定特殊变量/方法. 主要存在四种情形1.    1. object # public    2. __object__ # special, python system use, user should not define like it    3. __object # private (name mangling duri

私有属性,私有方法,类变量,实例变量,单下划线,双下划线

1.私有属性__age,不能通过实例对象直接调用,而是通过一个方法来调用 class Dog: def __init__(self, new_age): self.__age = new_age def get_age(self): return self.__age wang_cai = Dog(1) result = wang_cai.get_age() print(result) 2.私有方法,通过一个共有方法来调用 class Dog(object):   def __init__(se

python 里面的单下划线与双下划线的区别(私有和保护)

Python 用下划线作为变量前缀和后缀指定特殊变量. _xxx 不能用'from module import *'导入 ——变量名_xxx被看作是“私有 的”,在模块或类外不可以使用.__xxx__ 系统定义名字 ——__xxx 类中的私有变量名 ——只有类对象自己能访问,连子类对象也不能访问到这个数据. 核心风格:避免用下划线作为变量名的开始. 因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下划线作为变量名的开始.一般来讲,变量名_xxx被看作是“私有 的

python 里面的单下划线与双下划线的区别

python 里面的单下划线与双下划线的区别 Python 用下划线作为变量前缀和后缀指定特殊变量. _xxx 不能用'from moduleimport *'导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避免用下划线作为变量名的开始. 因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下 划线作为变量名的开始.一般来讲,变量名_xxx被看作是“私有 的”,在模块或类外不可以使用. 当变量是私有的时候,用_xxx 来表示变量是很好的习

python中的单下划线和双下划线意义和作用

Python中并没有真正意义上的“私有”,类的属性的的可见性取决于属性的名字(这里的属性包括了函数).例如,以单下划线开头的属性(例如_spam),应被当成API中非公有的部分(但是注意,它们仍然可以被访问),一般是具体实现细节的部分.单下划线常用来实现模块级私有化,当我们使用“from mymodule import *”来加载模块的时候,不会加载以单下划线开头的模块属性. 而以双下划线开头并最多以一个下划线结尾的属性(例如___spam),将会被替换成_classname__spam这样的形

面对对象之私有属性,以及单、双下划线 | Pythoon

# 在很多程序中会遇到__name,_name的标识符,在类中,如果属性带有双 # 下划线,表示私有属性,通俗的讲,就是不能在类命名空间外被直接调用,但是 # 可以通过方法来调用. # 其实这种表述并不明确,为什么不能被外部直接调用? # 因为,在类被定义的时候,带有双下滑线的属性,它的名字会自动发生改变: # 样式:_Classname__name # 所以,无法直接通过obj.__name访问到值;# 作用:防止子类创建的对象与基类创建的对象出现命名空间冲突的问题; # 单下划线,其实这种标

python单下划线、双下划线、头尾双下划线说明:

单下划线.双下划线.头尾双下划线说明: __foo__: 定义的是特殊方法,一般是系统定义名字 ,类似 __init__() 之类的. _foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import * __foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了. 来源: http://www.runoob.com/python/python-object.htm