Python中通过property设置类属性的访问

 更新时间:2023年09月05日 15:06:32   作者:棉猴  
为了达到类似C++类的封装性能,可以使用property来设置Python类属性的访问权限,本文就介绍一下Python中通过property设置类属性的访问,感兴趣的可以了解一下,感兴趣的可以了解一下

Python类的所有属性都是公共的,无法将其设置为私有,即任何实例对象都可以通过该属性名对其进行访问。为了达到类似C++类的封装性能,可以使用property来设置Python类属性的访问权限。

类的封装性能,指的是只能通过指定的方法对类的属性进行访问。因此,首先为类定义访问属性的方法。

1 定义访问类属性的方法

代码如下所示

class A:
    def __init__(self, name):
        self.name = name
    def get_name(self):
        return self.name
    def set_name(self, name):
        self.name = name

其中,类A有一个名为name的属性,通过get_name()方法获取该属性,通过set_name()方法设置该属性。

2 使用property()设置访问类属性的方法

在定义完获取和设置属性的方法之后,在类A的内部使用property()设置访问类属性的方法,代码如下所示。

name = property(get_name, set_name)

其中,property()的第一个参数表示获取指定属性时要调用的方法,第二个参数表示设置指定属性时要调用的方法。

3 获取和设置指定属性

通过如下代码获取和设置指定属性。

a1 = A('yang')
print(a1.my_name)
a1.my_name = 'li'
print(a1.my_name)

第一个print()中打印的是a1.my_name,此时实际上调用的是property()的第一个参数,即get_name()获取类A的属性name;之后通过a1.my_name设置类A的属性name,此时调用的是类A的set_name()方法。

4 property()扩展用法

在“2 使用property()设置访问类属性的方法”中提到了property()前两个参数的含义。property()第三个参数表示在删除(del)实例对象时,自动调用的方法,而第四个参数的类型是字符串,表示对类的描述,在显示__doc__属性时显示。

在类A的内部添加如下代码:

def del_name(self):
        print('del_name')
my_name = property(get_name, set_name, del_name, '我是类A')

之后,在主程序中使用如下代码

print(A.my_name.__doc__)
del a1.my_name

此时,程序会打印“我是类A”和“del_name”信息。

到此这篇关于Python中通过property设置类属性的访问的文章就介绍到这了,更多相关Python property设置类属性内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中用altzone()方法处理时区的教程

    Python中用altzone()方法处理时区的教程

    这篇文章主要介绍了Python中用altzone()方法处理时区的教程,是Python入门中的基础知识,需要的朋友可以参考下
    2015-05-05
  • Python实现文件及文件夹操作大全

    Python实现文件及文件夹操作大全

    在日常工作或生活中,总避免不了需要操作文件或文件夹,本文主要介绍了Python实现文件及文件夹操作大全,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • 深入解读Python解析XML的几种方式

    深入解读Python解析XML的几种方式

    这篇文章主要为大家详细介绍了深入解读Python解析XML的几种方式,以ElementTree模块为例,演示具体使用方法和场景,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • tensorflow 只恢复部分模型参数的实例

    tensorflow 只恢复部分模型参数的实例

    今天小编就为大家分享一篇tensorflow 只恢复部分模型参数的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • python正确读取文件路径的三种方式

    python正确读取文件路径的三种方式

    这篇文章主要介绍了python正确读取文件路径的三种方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • MacOS(M1芯片 arm架构)下安装tensorflow的详细过程

    MacOS(M1芯片 arm架构)下安装tensorflow的详细过程

    这篇文章主要介绍了MacOS(M1芯片 arm架构)下如何安装tensorflow,本节使用的版本是tensorflow2.4 python3.8,因此并未安装加速插件,本文结合实例代码详细讲解,需要的朋友可以参考下
    2023-02-02
  • 浅谈tensorflow 中tf.concat()的使用

    浅谈tensorflow 中tf.concat()的使用

    今天小编就为大家分享一篇浅谈tensorflow 中tf.concat()的使用,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python 多线程通信的常用方法汇总

    Python 多线程通信的常用方法汇总

    Python中常用的线程通信方式主要有共享变量、Queue、Event、Condition、Semaphore和Barrier,这些方法都通过锁机制保证线程安全,用于实现多线程之间的通信和数据交换,本文介绍Python 之多线程通信的几种常用方法,感兴趣的朋友跟随小编一起看看吧
    2026-01-01
  • Python结合pywebview打造轻量级桌面应用的完整教学

    Python结合pywebview打造轻量级桌面应用的完整教学

    pywebview 是一个轻量级的跨平台Python库,它允许你在一个原生窗口中嵌入Web技术来构建GUI界面,下面我们就来看看Python如何使用pywebview打造轻量级桌面应用吧
    2026-05-05
  • python图像加噪声的实现示例

    python图像加噪声的实现示例

    图像加噪声就是其中一种常见的处理方式,噪声可以帮助提高图像的真实性和复杂性,使得处理后的图像更加接近真实的场景,本文主要介绍了python图像加噪声的实现示例,感兴趣的可以了解一下
    2023-08-08

最新评论