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实现操作Redis所有类型的方法详解

    Python实现操作Redis所有类型的方法详解

    Redis作为一款高性能的NoSQL数据库,越来越受到了广大开发者的喜爱。本篇博客将介绍如何使用Python操作Redis的所有类型,以及一些高级用法,感兴趣的可以了解一下
    2023-04-04
  • tensorflow输出权重值和偏差的方法

    tensorflow输出权重值和偏差的方法

    本篇文章主要介绍了tensorflow输出权重值和偏差的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • Pytest框架之fixture详解(二)

    Pytest框架之fixture详解(二)

    本文详细讲解了Pytest框架之fixture,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Python使用selenium实现网页用户名 密码 验证码自动登录功能

    Python使用selenium实现网页用户名 密码 验证码自动登录功能

    这篇文章主要介绍了Python使用selenium实现网页用户名 密码 验证码自动登录功能,实现思路很简单,感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-05-05
  • python list转dict示例分享

    python list转dict示例分享

    这篇文章主要介绍了python list转dict的使用方法,大家参考使用吧
    2014-01-01
  • Python利用numpy实现三层神经网络的示例代码

    Python利用numpy实现三层神经网络的示例代码

    这篇文章主要介绍了Python利用numpy实现三层神经网络的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Python 随机按键模拟2小时

    Python 随机按键模拟2小时

    这篇文章主要介绍了Python 随机按键模拟的方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • Python入门篇之面向对象

    Python入门篇之面向对象

    面向对象设计(OOD)不会特别要求面向对象编程语言。事实上OOD可以由纯结构化语言来实现,比如C,但如果想要构造具备对象性质和特点的数据类型,就需要在程序上作更多的努力。当一门语言内建OO特性,OO编程开发就会更加方便高效。
    2014-10-10
  • Python 实现RSA加解密文本文件

    Python 实现RSA加解密文本文件

    这篇文章主要介绍了Python 实现RSA加解密文本文件的方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • Python本地与全局命名空间用法实例

    Python本地与全局命名空间用法实例

    这篇文章主要介绍了Python本地与全局命名空间用法,实例分析了Python命名空间的相关使用技巧,需要的朋友可以参考下
    2015-06-06

最新评论