iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python类的私有属性和公共属性说明
  • 174
分享到

python类的私有属性和公共属性说明

2024-04-02 19:04:59 174人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录python类私有属性和公共属性Python私有属性的定义python类私有属性和公共属性 对于python而言,类的属性的可见度只有两种,public和private。 类的私

python类私有属性和公共属性

对于python而言,类的属性的可见度只有两种,public和private。

类的私有属性便是在前面加上“__”标识符,而公共属性则不必。

在类的外面访问私有属性会引发异常。

class Base:
    def __init__(self, value):
        self.__value = value
 
b = Base(5)
print(assert b.__value)
 
Traceback (most recent call last):
  File "/Users/yangjiajia/Desktop/project/python/algebra/test.py", line 19, in <module>
    print(b.__value)
AttributeError: 'Base' object has no attribute '__value'

属性被私有化,即使继承他的字类也不能访问到。

class Parent:
    def __init__(self, value):
        self.__value = value 
 
class Child(Parent):
    def get_value(self):
        return self.__value
 
child = Child(4)
print(child.get_value())
 
Traceback (most recent call last):
  File "/Users/yangjiajia/Desktop/project/python/algebra/test.py", line 24, in <module>
    print(child.get_value())
  File "/Users/yangjiajia/Desktop/project/python/algebra/test.py", line 21, in get_value
    return self.__value
AttributeError: 'Child' object has no attribute '_Child__value'

为何会这样?因为python会对类的私有属性做些转换,以保证private字段的私密性。当编译器看到Child.get_value方法要访问私有属性时,他会先把__value变换为_Child_value然后再进行访问,但实际上该私有属性是_Parent__value。字类无法访问父类的私有属性,只是因为访问的名称不同。

查询该对象的属性字典便知

class Parent:
    def __init__(self, value):
        self.__value = value 
 
class Child(Parent):
    def name(self):
        names = 'yang'
 
    def get_value(self):
        return self.__value
 
child = Child(4)
print(child.__dict__)
 
{'_Parent__value': 4}

python开发的原则还是要少用私有属性,如果需要保证属性不重复,可以在其前面加上单个下划线。

class Parent:
    def __init__(self, value):
        self._value = value 
 
class Child(Parent):
    def get_value(self):
        return self._value
 
child = Child(4)
assert child._value == 4

python私有属性的定义

在Java中用private对变量或者方法进行限定,则方法仅在整个类内部可见,外部不可见、不可访问。

在python中也有私有属性定义,使用函数名前缀的两个下划线进行定义。

例如 __parameter

接下来看上一个Dog的例子

class Dog(object):
    __slots__ = ('__name', 'kind', 'level')
    def __init__(self,name,kind,level):#构造函数,定义属性和初始方法
        self.__name=name
        self.kind=kind
        self.level=level#赋值
        print(f"This is a {self.kind} dog called {self.__name} with level {self.level}")
 
    def run(self):#定义类中的方法
        print(f"{self.__name} is now running!")
 
    def roll_over(self):
        print(f"{self.__name} is now rolling over!")
 
    def change_level(self):
        self.level+=1#修改类中属性的值
        print(f"The level of {self.__name} is now {self.level}")

在另一个文件里面进行调用

from Zoo.Dog import Dog#导包
 
dog=Dog("Halo","Husty",3)#实例化
 
dog.run()
dog.roll_over()
dog.change_level()#调用方法

发现当我们输入以下内容时,会报错,非法访问。

print(dog.__name)

在本例中,__name是对name进行私有限定。 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: python类的私有属性和公共属性说明

本文链接: https://www.lsjlt.com/news/117831.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python类的私有属性和公共属性说明
    目录python类私有属性和公共属性python私有属性的定义python类私有属性和公共属性 对于python而言,类的属性的可见度只有两种,public和private。 类的私...
    99+
    2024-04-02
  • python 公有属性和私有属性
    十三、python 公有属性和私有属性 属性: 方法: class Chinese(Person): nation = 'China' def __init__(self,name): self.__name = name def m...
    99+
    2023-01-31
    属性 python
  • Vue.component的属性说明
    目录Vue.component的属性1.template2.data3.methods4.propsVue的component标签作用is属性Vue.component的属性 Vue...
    99+
    2024-04-02
  • python3中类的重点与难点:类属性和实例属性的区别说明
    先看图理解: 类属性就相当与全局变量,实例对象共有的属性,实例对象的属性为实例对象自己私有。 类属性就是类对象(Tool)所拥有的属性,它被所有类对象的实例对象(实例方法)所共有,...
    99+
    2024-04-02
  • python类属性和实例属性
        python中的类属性只是存储与类相关的数据,和该类的实例无关。类属性和java中的静态成员变量类似。访问python的类属性可使用类名+“.”+属性名的方式,如果类的实例没有同名变量也可以使用实例来访问。如果实例含有与类属性同名的...
    99+
    2023-01-31
    实例 属性 类属
  • VBS对象Dictionary的属性和说明
    本篇内容主要讲解“VBS对象Dictionary的属性和说明”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“VBS对象Dictionary的属性和说明”吧!Dictionary 保存数据键和项目对...
    99+
    2023-06-08
  • python——“破解”私有属性
    #coding:utf-8 class A:     def __init__(self, name, age, pwd):         self.__name = name         self.__age = age     ...
    99+
    2023-01-31
    属性 python
  • Android开发手册shape属性和子属性使用说明
    目录shape属性详解子属性详解shape属性详解 <xml version="1.0" encoding="utf-8"> <shape xmlns:androi...
    99+
    2024-04-02
  • Python 私有属性与私有方法
    目录1. 场景定义2. 语法定义3. 调用分析4. Python伪私有属性和私有方法1. 场景定义 私有属性: 是指在 Python 的面向对象开发过程中,对象的某些属性只想在对象的...
    99+
    2024-04-02
  • Vue组件的计算属性和普通属性的区别说明
    目录计算属性和普通属性的区别说明计算属性关键词: computedcomputed vs methods总结计算属性和普通属性的区别说明 计算属性关键词: computed 计算属性...
    99+
    2023-01-28
    Vue组件 Vue计算属性 Vue普通属性
  • Python属性私有化详解
    目录前言私有化属性set和get装饰器@property前言 在做程序的过程中,有时候程序猿不想让外人动一些值,这个时候,就可以考虑把一些变量进行私有化 __属性:就是将属性私有化,...
    99+
    2023-02-08
    Python私有化 Python私有化属性
  • python中的私有属性和私有方法是什么
    这篇文章给大家介绍python中的私有属性和私有方法是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。私有权限面向对象三大特性:封装、继承、多态封装的意义:将属性和方法放到一起做为一个整体,然后通过实例化对象来处理;...
    99+
    2023-06-14
  • FeignClient中name和url属性的作用说明
    目录name和url属性的作用定义场景解释@FeignClient注解属性vaule和name 其实是一个属性关于调用目前有两种name和url属性的作用 定义 feign是声明式的...
    99+
    2024-04-02
  • python基础之类属性和实例属性
    属性:类属性和实例属性 类属性:就是类对象所有的属性 小结 '类属性 是可以 被 类对象和实例对象共同访问的 实例属性只能由实例对象访问 class Student: ...
    99+
    2024-04-02
  • Xamarin.Forms XAML控件的公共属性有哪些
    这篇文章主要为大家展示了“Xamarin.Forms XAML控件的公共属性有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Xamarin.Forms XAML控件的公共属性有哪些”这篇文章...
    99+
    2023-06-04
  • 聊聊Python私有属性与私有方法
    1、 场景定义私有属性是指在 Python 的面向对象开发过程中,对象的某些属性只想在对象的内部被使用,但不想在外部被访问到这些属性。即:私有属性是对象不愿意公开的属性。私有方法是指在 Python 的面向对象开发过程中,对象的某些方法或者...
    99+
    2023-05-14
    Python 私有属性 私有方法
  • Vue.delete()删除对象的属性说明
    目录Vue.delete()删除对象的属性delete和Vue.delete的区别Vue.delete()删除对象的属性 Vue.delete( target, key ) da...
    99+
    2024-04-02
  • python基础知识之私有属性和私有方法
    私有权限 面向对象三大特性:封装、继承、多态 封装的意义: 将属性和方法放到一起做为一个整体,然后通过实例化对象来处理; 隐藏内部实现细节,只需要和对象及其属性和方法交互就...
    99+
    2024-04-02
  • 关于python类属性和实例属性的细节有哪些
    本篇内容主要讲解“关于python类属性和实例属性的细节有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“关于python类属性和实例属性的细节有哪些”吧!关于python类属性和实例属性,简...
    99+
    2023-06-02
  • Vue中computed(计算属性)和watch(监听属性)的用法及区别说明
    目录计算属性computed侦听属性watch计算属性computed 支持缓存,只有依赖数据发生改变,才会重新进行计算 不支持异步,当computed内有异步操作时无效,无法监听数...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作