精华内容
下载资源
问答
  • 私有属性python 私有属性以两个下划线开头。python 私有属性只能在类内部访问,类外面访问会出错。python 私有属性之所以不能在外面直接通过名称来访问,其实质是因为 python 做了一次名称变换。保护属性python 保护...

    私有属性

    python 私有属性以两个下划线开头。

    python 私有属性只能在类内部访问,类外面访问会出错。

    python 私有属性之所以不能在外面直接通过名称来访问,其实质是因为 python 做了一次名称变换。

    保护属性

    python 保护属性更多的是一种语法上的标识,用来提醒直接修改改对象时候要小心。

    python 保护属性和公开属性都可以在类外面直接访问。

    classNewClass(object):def __init__(self):

    self.public_field= 5 #public

    self.__private_field = 10 #private

    self._protect_field = 99 #protect

    def __private_method(self):print "I am private method"

    defpublic_method(self):print "I am public method"test=NewClass()printtest.public_field

    test.public_method()print test.__dict__ #{'_NewClass__private_field': 10, 'public_field': 5}

    #使用变换过后的名称访问,Success

    print test._NewClass__private_field #10

    test._NewClass__private_method() #I am private method

    #直接访问,Fail

    print test.__private_field #AttributeError: 'NewClass' object has no attribute '__private_field'

    test.__private_method() #AttributeError: 'NewClass' object has no attribute '__private_method'

    展开全文
  • Python没有类似于Java的private关键字, 但也可以为类定义私有属性. 只需将属性命名变为以__开头, 例如 __field.示例代码:class Vector2D(object):def __init__(self, x, y):self.__x = float(x)self.__y = float(y)...

    Python没有类似于Java的private关键字, 但也可以为类定义私有属性. 只需将属性命名变为以__开头, 例如 __field.

    示例代码:class Vector2D(object):

    def __init__(self, x, y):

    self.__x = float(x)

    self.__y = float(y)

    self.xx = x

    self.yy = y

    def get_x(self):

    return self.__x # 内部访问

    if __name__ == "__main__":

    v = Vector2D(3, 4)

    print v.__dict__

    print v._Vector2D__x, v.get_x()# 但是可以通过v._Vector2D__x 在外部访问

    v.__x # 外部访问

    输出:{'yy': 4, 'xx': 3, '_Vector2D__x': 3.0, '_Vector2D__y': 4.0}

    3.0 3.0

    Traceback (most recent call last):

    ...

    v.__x

    AttributeError: 'Vector2D' object has no attribute '__x'

    从上面的例子可以看出:

    1. __field被编译器重命名为_className__field

    2. 在class外部不能访问obj.__field, 但在class内部可以

    3. 但是, 这只能防止无意间的调用, 不能防止恶意调用, 用Fluent Python的话来讲, 这是一种safety device, not security device, 用国语来讲, 就是防君子不防xx, 因为可以通过obj._className__field在外部访问obj的私有__field.

    补充知识:python中私有属性和私有方法,修改私有属性的值

    如果一个属性是以两个下划线开始 就标识这个这个属性是一个私有属性self.__money = 1000000

    如果一个方法是以两个下划线开始 也代表已经私有

    子类继承了父类 如果父类的属性私有 将不会被子类继承

    私有属性和私有方法可以在类的里面使用

    自定义类中 如果一个属性进行了私有 在类的外面不能调用

    修改私有属性的值

    如果需要修改一个对象的属性值,通常有2种方法对象名.属性名 = 数据 —- 直接修改

    对象名.方法名() —- 间接修改

    私有属性不能直接访问,所以无法通过第一种方式修改,一般的通过第二种方式修改私有属性的值:定义一个可以调用的公有方法,在这个公有方法内访问修改。class Person(object):

    def __init__(self):

    self.name = "小明"

    self.__age = 20

    #获取私有属性的值

    def get_age(self):

    return self.__age

    #设置私有属性的值

    def set_age(self, new_age):

    self.__age = new_age

    #定义一个对象

    p = Person()

    #强行获取私有属性

    #崇尚一切靠自觉

    print(p._Person__age)

    print(p.name)

    #想在类的外面获取对象的属性

    ret = p.get_age()

    print(ret)

    #想在类的外面修改对象私有属性的值

    p.set_age(30)

    print(p.get_age())

    以上这篇Python中私有属性的定义方式就是小编分享给大家的全部内容了,希望能给大家一个参考。

    展开全文
  • 类的私有属性和方法Python是个开放的语言,默认情况下所有的属性和方法都是公开的 或者叫公有方法,不像C++和 Java中有明确的public,private 关键字来区分私有公有。Python默认的成员函数和成员变量都是公开的,类的...

    类的私有属性和方法

    Python是个开放的语言,默认情况下所有的属性和方法都是公开的 或者叫公有方法,不像C++和 Java中有明确的public,private 关键字来区分私有公有。

    Python默认的成员函数和成员变量都是公开的,类的私有属性指只有在类的内部使用的属性或方法,表现形式为以“__“ 属性名或方法名以双下划线开头。

    class Test(object):

    __count = 0 # 私有属性 __count

    def get_count(self):

    return self.__count # 类的内部可以使用私有属性

    def set_count(self, value):

    if self.__check_value(value): # 在类的内部调用类的私有方法

    self.__class__.__count = value

    def __check_value(self, value): # 定义类的私有方法 检查参数

    if isinstance(value, int):

    return True

    a = Test()

    print(a.get_count())

    a.set_count(100)

    print(a.get_count())

    #a.__check_value(10) # 调用私有方法会报错

    #print(a.__count)# 直接访问私有属性也会报错

    应用场景

    对于一些敏感的数据,我们不希望直接被的函数调用,或者不希望草率的直接object.key = value 来修改,我们可以选择将属性声名为私有的,这样从外部时无法访问该属性的,也就不能修改了,但是依然可以修改属性字典的方法来修改。

    # 当然 可以使用 @proprety

    class Person(object):

    __name = 'Monkey'

    def update_name(self, name):

    self.__name = name

    def get_name(self):

    return self.__name

    p = Person()

    p.update_name('BlackMonkey')

    print(p.get_name()) # BlackMonkey

    print(p.__name) # 报错 AttributeError: 'Person' object has no attribute '__name'

    展开全文
  • 主要介绍了Python私有属性的定义方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 在本篇文章里小编给大家整理的是一篇关于python调用私有属性的方法总结,对此有需要的朋友们可以学习下。
  • python默认的成员函数和成员变量都是公开的,python 私有属性和方法没有类似别的语言的public,private等关键词来修饰。 在python中定义私有变量只需要在变量名或函数名前加上 "__"两个下划线,那么这个函数或变量就...

    python默认的成员函数和成员变量都是公开的,python 私有属性和方法没有类似别的语言的public,private等关键词来修饰。 在python中定义私有变量只需要在变量名或函数名前加上 "__"两个下划线,那么这个函数或变量就会为私有的了。 在内部,python使用一种 name mangling 技术,将 __membername替换成 _classname__membername,所以你在外部使用原来的私有成员的名字时,会提示找不到。 比如:

    class Person:

    def __init__(self):

    self.__name = 'haha'#私有属性

    self.age = 22

    def __get_name(self):##私有方法

    return self.__name

    def get_age(self):

    return self.age

    person = Person()

    print person.get_age()

    print person.__get_name()

    运行结果是:22 Traceback (most recent call last): File "E:\pythoner\zenghe\jay.py", line 38, in print person.__get_name() AttributeError: Person instance has no attribute '__get_name'

    我们这里定义的__name是私有属性,__get_name()是私有方法。如果直接访问的话,会提示找不到相关的属性或者方法,但是如果你真要访问私

    有的相关数据的话, 也是可以访问的,严格地说,私有方法在它们的类外是可以访问的,只是不容易 处理。在 Python

    中没有什么是真正私有的;在内部,私有方法和属性的名字被忽然改变和恢复,以致于使得它们看上去用它们给定的名字是无法使用的

    展开全文
  • python私有属性.md

    2020-05-28 10:53:44
    python中伪私有属性小技巧
  • python对于类的成员没有严格的访问控制限制,这与其他面向对象语言有区别,关于私有属性和私有方法,有如下要点: 1.通常我们约定,两个下划线开头的属性是私有的(private),其他为公共的(public)。 2.类...
  • 私有属性和私有方法01. 应用场景及定义方式应用场景在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到私有属性 就是 对象 不希望公开的 属性私有方法 就是 对象 不希望...
  • Python3 私有属性

    千次阅读 2018-01-31 22:04:51
    # 对象的私有属性 class People(object):  """ descrapition 可以写一些类的描述 """  def __init__(self, name):  self.name = name  # 声明一个对象的私有属性  # 私有属性只能在
  • 17.python-私有属性和私有方法

    千次阅读 2019-11-27 21:24:02
    私有属性和私有方法 01. 应用场景及定义方式 应用场景 在实际开发中,对象的某些属性或方法可能只希望在对象的内部被使用,而不希望在外部被访问到 私有属性就是对象不希望公开的属性 私有方法就是对象不希望...
  • 私有属性和私有方法 应用场景及定义方式 应用场景 在实际开发中,对象的某些属性或方法可能只希望在对象的内部使用,而不希望在外部被访问到 私有属性 就是 对象 不希望公开的 属性 私有方法 就是 方法 不希望公开的...
  • python私有属性

    2016-08-23 19:37:08
    python私有属性python中没有private关键字,想要创建一个类私有的变量需要通过命名规则来实现在变量名之前加两个下划线__name,则在类外部就不能直接通过实例.__name访问,具体原理python编译器将其命名修改为了_...
  • python私有属性及私有方法

    千次阅读 2017-11-08 14:15:31
    如果有一个对象,当需要对其进行修改属性时,有2种方法: ...(1)将属性定义为私有属性 (2)添加一个可以调用的方法,供调用,也就是间接调用属性 下面这个是一个错误的例子: class People(object): def __in
  • 如果一个属性是以两个下划线开始 就标识这个这个属性是一个私有属性self.__money = 1000000如果一个方法是以两个下划线开始 也代表已经私有子类继承了父类 如果父类的属性私有 将不会被子类继承私有属性和私有方法...
  • Python 定义私有属性

    千次阅读 2017-09-23 20:58:30
    Python没有类似于Java中的private关键字, 但也可以为类定义私有属性: 将属性命名为: __field.class Vector2D(object): def __init__(self, x, y): self.__x = float(x) self.__y = float(y) self.xx = x self
  • 如何在PYTHON里运用私有属性和方法class File:def __init__(self, name):self.name = nameself.code = "ABCDEF"file_A = File("file_A")#假设我们有一个类,叫做文件类,设置一个对象file_A。file_A.code#如果直接...
  • 注意,不能直接访问私有属性,但可以通过方法中访问。 举个栗子: class A: __name='class A' def dd(self): print('私有属性') sg=A() sg.dd() print(sg.__name) 运行结果: Traceback (most recent call last...
  • 私有属性 python对类的成员没有严格的访问控制限制,这与其他面向对象语言有区别。关于私有属性和私有方法,有如下要点: 1.通常我们约定,两个下划线开头的属性是私有的(private)。其他的为公共的(public)。 2....
  • Python私有属性总结

    2020-08-02 20:49:08
    前言:在前面的博文里,我介绍了Python中的面向对象,详情见:深入浅出Python——Python高级语法之文件操作,本文将主要讲解with open() as读写文件的优点与作用。
  • python对于类的成员没有严格的访问控制限制,这与其他面对对象语言有区别。 方法本质上也是属性,只不过是可以通过()执行...4、类外部可以通过”__类名 __私有属性(方法)名"访问私有属性(方法) # 测试私有属性 ...
  • 在定义属性或者方法时,在前面加上两个下划线"__",定义的就是私有属性或者方法 案例: class Women: def __init__(self,name): self.name = name self.__age = 18 def secret(self): #在对象的内部,是可以...
  • 主要介绍了Python私有属性私有方法应用场景解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • python私有属性访问方法 class Attr(): def __init__(self): self.arg1 = 'public' self.__arg2 = 'private' if __name__ == '__main__': attr = Attr() #public属性获取 print(attr.arg1) ...
  • python私有方法和私有属性

    万次阅读 多人点赞 2018-05-21 08:51:51
    Python默认的成员函数和成员变量都是公开的,Python 私有属性和方法没有类似别的语言的public,private等关键词来修饰。 在python中定义私有变量只需要在变量名或函数名前加上 "__"两个下划线,那么这个函数或变量就...
  • 私有属性和方法 在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到 私有属性 就是 对象 不希望公开的 属性 私有方法 就是 对象 不希望公开的 方法 代码 class Girl: ...
  • python私有属性

    2018-04-29 09:26:59
    python 基础——私有属性私有属性python 私有属性以两个下划线开头。python 私有属性只能在类内部访问,类外面访问会出错。python 私有属性之所以不能在外面直接通过名称来访问,其实质是因为 python 做了一次名称...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,986
精华内容 17,994
关键字:

python设置私有属性

python 订阅