首页 > 编程语言 >Python中的私有属性与私有方法

Python中的私有属性与私有方法

时间:2024-04-23 19:22:21浏览次数:30  
标签:__ 调用 私有 Demo Python print 属性

关于Python中的私有属性和私有方法

Python对于类的成员没有严格的访问控制限制,这与其他面相对对象语言有区别。关于私有属性和私有方法,有如下要点:

1、通常我们约定,两个下划线开头的属性是私有的(private)。其他为公共的(public);
2、类内部可以访问私有属性(方法);
3、类外部不能直接访问私有属性(方法);
4、类外部可以通过 _类名__私有属性(方法)名访问私有属性(方法)

定义私有属性/方法

class Demo:
    __price = 25.8

    def __init__(self, u_name, u_age):
        self.uname = u_name
        self.__uage = u_age

    def __age(self):
        print("这是私有方法")
        print("调用共有属性:", self.uname)
        print("调用私有属性:", self.__uage)
        print("调用私有类属性:", self.__price)

    def name(self):
        print("这是公有方法")
        print("调用共有属性:", self.uname)
        print("调用私有属性:", self.__uage)
        print("调用私有类属性:", self.__price)

使用 dir()函数可以查看对象内的所有的属性和方法

在 python 中任何东西都是对象,一种数据类型,一个模块等,都有子集的属性和方法,除了常用的方法外,其他的你不需要全部记住它,交给 dir() 函数就好了。

d = Demo('Tom', 18)
print(dir(d))
"""
['_Demo__age', '_Demo__price', '_Demo__uage', '__class__', '__delattr__', '__dict__', 
'__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__',
'__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__',
'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__',  '__str__', 
'__subclasshook__', '__weakref__', 'name', 'uname']
"""

这些打印出来的属性(方法)是可以直接调用的。从打印的结果可以看到,私有属性 __age()__price__uage 这三个私有属性(方法)都变成了 _Demo__age, _Demo__price, _Demo__uage,也就可以看出,私有属性(方法)在Python中是不允许直接去调用的,类外部可以通过 ”_类名__私有属性(方法)名“ 访问私有属性(方法)

调用属性(方法)

# 调用共有方法
d.name
"""
这是公有方法
调用共有属性: Tom
调用私有属性: 18
调用私有类属性: 25.8
"""
#学习中遇到问题没人解答?小编创建了一个Python学习交流群:153708845
# 调用私有方法(错误示范)
d.__age()
"""
Traceback (most recent call last):
  File "D:/Local/PycharmProjects/private_obj/demo.py", line 32, in <module>
    d.__age()
AttributeError: 'Demo' object has no attribute '__age'
"""

# 调用私有方法(正确示例)
d._Demo__age()
d._Demo__
"""
这是私有方法
调用共有属性: Tom
调用私有属性: 18
调用私有类属性: 25.8
"""

# 调用私有属性
print(Demo._Demo__price) # 25.8
print(d._Demo__uage) # 18

【注】方法本质上也是属性!只不过是可以通过()执行而已。

标签:__,调用,私有,Demo,Python,print,属性
From: https://www.cnblogs.com/python1111/p/18153612

相关文章

  • python3下安装mysqlclient各种报错 raise OSError mysql_config not found
    linux下载地址:https://files.pythonhosted.org/packages/a5/e1/e5f2b231c05dc51d9d87fa5066f90d1405345c54b14b0b11a1c859020f21/mysqlclient-2.0.1.tar.gz#sha256=fb2f75aea14722390d2d8ddf384ad99da708c707a96656210a7be8af20a2c5e5在服务器执行pipinstallmysqlclient-2.0.......
  • 接口测试方法:Spring boot Test、python、postman
    一般的rest接口在pom.xml中加入org.springframework.bootspring-boot-starter-testtest新建测试类@RunWith(SpringRunner.class)@SpringBootTestpublicclassUserControllerTest{privateMockMvcmvc;//初始化执行@BeforepublicvoidsetUp()throwsException......
  • Python 中删除文件夹下文件的方法详解
    前言在编写和维护Python脚本时,经常会遇到需要删除文件夹中特定文件的情况。Python提供了多种方法来实现这一目标,本文将介绍几种常用的方法,以及它们的优缺点和适用场景。方法一:使用os模块Python的os模块提供了操作文件系统的功能,可以轻松实现删除文件夹下的文件。下面......
  • 使用 Python 循环创建多个列表
    前言在Python中,我们可以使用循环来动态创建多个列表,这在处理数据、进行数据分析或进行算法实现时非常有用。本文将介绍几种常见的方法,以帮助大家学习如何使用循环创建多个列表。方法一:使用列表推导式列表推导式是Python中一种简洁的语法,可以快速生成列表。我们可以结合循......
  • Python 字符串格式化指南
    前言在Python中,字符串格式化是一种常见且重要的操作,用于将变量或值插入到字符串中,并控制输出的格式。本文将介绍几种常见的字符串格式化方法,帮助大家掌握在Python中有效地处理字符串的技巧。方法一:使用%操作符格式化字符串使用%操作符是一种传统的字符串格式化方法,可......
  • 批量将excle文档用例转为python脚本
    #-*-coding:utf-8-*-importtimeimportpandasaspdimportosallure_param={"epic":"用例版本名","feature":"用例特性名","story":"用例场景名"}df=pd.read_excel(r'D:\aaaaaa.xlsx......
  • python 基础习题2--字符串切片技术
    1. 有如下字符串str='123456789'字符串切片技术,例如,返回输出从第三个开始到第六个的字符(不包含)即得到:345利用字符串切片技术,代码可以这么写:print(str[2:5])如果想返回如下八行结果,利用字符串切片技术,如何编写代码?12345678912345678134534567892412345678912345678......
  • python 基础习题1--基础语法
    1.书写代码,输出结果为: 答案:print("Hello,Python!")ViewCode 2. ......
  • Python——Reflex安装
    Reflex 是一个开源框架,用于在纯Python 中快速构建美观的交互式Web应用程序。安装环境:Ubuntu23.04(完成软件更新)安装虚拟环境sudoapt-getinstallpython3-venv创建项目mkdirmy_app_namecdmy_app_name 进入虚拟环境python3-mvenv.venvsource.venv/bin/act......
  • Pycharm报错:ReadTimeoutError: HTTPSConnectionPool(host=‘files.pythonhosted.org‘
    今天在pycharm里面pipinstall库的时候报了这个错,如图所示:第一种,设置超时时间,命令如下:pip--default-timeout=1000install-U模块名第二种,用镜像网站进行下载,这种方法下载的速度超快的哦=.=,命令如下:pip--default-timeout=100install库名称-ihttp://pypi.douban.com/......