Python学习记录 私有属性和私有方法

Python 类的私有属性和私有方法 在第 3 行,创建一个私有属性。start,表示开始位置end,表示结束位置length,表示线段的长度,等于 end - start当修改属性 start 时,属性 length 会发生变化;当修改属性 end 时,属性 length 也会发生变化;在第 2 行,定义构造方法在第 5 行,使用属性 start 和 end 计算属性 length在第 7 行,定义方法 show,打印属性 start、end、length。 阅读详情

2022.08.14 DAY30

私有属性和私有方法
  • Python对于类的成员没有严格的访问控制限制,这是其与其他面向对象语言有区别。
  • 私有方法和私有属性要点:
    • 通常我们约定,两个下划线开头的属性是私有的(private)。其他为公共的(public)。
    • 类内部可以访问私有属性(方法)。
    • 类外内部不能直接访问私有属性(方法)。
    • 类外部可以通过"__类名__私有属性(方法)名"访问私有属性方法。

实例:

# 测试私有属性
class Employee:

    __company = "百战程序员"  # 类变量

    def __init__(self, name, age, score):
        self.name = name
        self.age = age  # 私有属性
        self.__score = score

    def __work(self):  # 私有方法
        print("{0}要好好工作".format(self.name))
        print("年龄:{0}".format(self.age))
        print("公司:{0}".format(self.__company))


def test():
    e = Employee("YJP", 21, 99)
    print(e.name)
    print(e.age)
    print(e._Employee__score)
    # print(dir(e))

    e._Employee__work()
    print(Employee._Employee__company)


if __name__ == "__main__":
    test()

结果:

YJP
21
99
YJP要好好工作
年龄:21
公司:百战程序员
百战程序员
@property装饰器_get和set方法
  • @property可以将一个方法的调用方式变成“属性调用”。

实例:

# 测试私有属性
class Employee:

    __company = "百战程序员"  # 类变量

    def __init__(self, name, age, salary):
        self.name = name
        self.age = age  # 私有属性
        self.__salary = salary

    def __work(self):  # 私有方法
        print("{0}要好好工作".format(self.name))
        print("年龄:{0}".format(self.age))
        print("公司:{0}".format(self.__company))

    # 测试@property的最简化使用
    @property
    def salary(self):
        print("salary run...")
        return self.__salary

    @salary.setter
    def salary(self, salary):
        if 1000 < salary < 50000:
            self.__salary = salary
        else:
            print("录入错误!薪水在1000--50000的范围内。")



def test():
    e = Employee("YJP", 21, 3000)
    print(e.name)
    print(e.age)
    print(e._Employee__salary)
    # print(dir(e))

    e._Employee__work()
    print(Employee._Employee__company)

    print(e.salary)
    e.salary = -2000
    print(e.salary)
    e.salary = 40000
    print(e.salary)


if __name__ == "__main__":
    test()

结果:

YJP
21
3000
YJP要好好工作
年龄:21
公司:百战程序员
百战程序员
salary run...
3000
录入错误!薪水在1000--50000的范围内。
salary run...
3000
salary run...
40000
Python私有属性详解 阅读详情

相关推荐

UE5.3与Colosseum配置实战:从编译到问题解决的全流程指南

本文提供了在Windows系统下配置UE5.3与Colosseum仿真环境的全流程实战指南。详细介绍了从软件版本选择、源代码获取、编译脚本执行到解决常见编译错误和引擎崩溃问题的具体步骤,旨在帮助开发者高效搭建无人机、机器人等仿真平台,并顺利运行外部API控制。

weixin_29002595的博客 557

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

将给大家介绍什么是私有属性和私有方法,科普一下伪私有属性和私有方法,包括如何访问。 1.私有属性和私有方法 什么是私有? 对象的某些属性或者方法,只希望在对象的内部被使用,而不希望在外部被访问 通过案例具体给大家分析 这是没有含私有属性和私有方法的示例代码: class Women: def __init__(self,name): self.name=name self.age=18 def secrect(self):

Wanster的博客 1507

glibc手动升级高版本导致系统(RedHat/Centos)异常(无法开机等)的解决方法(回退低版本glibc)

我的系统是Redhat7.6, 理论上Redhat7/Centos7都可以使用该方法解决问题。 首先慎重提醒各位:glibc升级会产生无法预料的后果!由于Android NDK需要高版本的glibc才可以使用,所以作死手动去更新了glibc2.18,使得重启系统后图形界面消失。(Redhat/Centos升级此类安装包最好用yum升级,因为系统内的程序对他们的依赖很大,升级会导致大部分程序无法使用...

weixin_42881528的博客 9696

python_私有属性和私有方法(实现封装)

目录一、私有属性1、私有属性是什么?2、私有属性的调用二、@property 装饰器2.读入数据总结 一、私有属性 1、私有属性是什么? 两个下划线开头的属性是私有的(private)。其他为公共的(public) 2、私有属性的调用 1、类内部可以访问私有属性(方法) 2、 类外部不能直接访问私有属性(方法) 3、 类外部可以通过“_类名__私有属性(方法)名”访问私有属性(方法) 方法本质上也是属性!只不过是可以通过()执行而执行 class Employee: __company="SXT"#

weixin_44719529的博客 179

【WILEY】wiley期刊投稿详解:从revision到Accepted全流程实例讲解

注意:包括没标注修改位置的word文件和标注了修改位置的word文件。

Everyday try to become better -Kobe Bryant 1万+

Ubuntu系统下STM32开发环境搭建:从零配置CubeMX、VSCode与OpenOCD调试实战

本文详细介绍了在Ubuntu系统下搭建STM32开发环境的完整流程,包括CubeMX、VSCode和OpenOCD的安装配置。通过实战教程指导开发者从基础环境准备到工程创建与调试,提供高效的嵌入式开发解决方案,并分享常见问题解决方法。

potato的博客 941

Python基础知识学习记录 2021——1129(方法的动态性,私有属性和私有方法,@property 装饰)

文章目录方法没有重载 方法没有重载 在其他语言中,可以定义多个重名的方法,只要保证方法签名唯一即可。方法签名包含 3 个部分:方法名、参数数量、参数类型。 Python 中,方法的的参数没有声明类型(调用时确定参数的类型),参数的数量也可以由 可变参数控制。因此,Python 中是没有方法的重载的。定义一个方法即可有多种调用方式, 相当于实现了其他语言中的方法的重载。 如果我们在类体中定义了多个重名的方法,只有最后一个方法有效。 建议:不要使用重名的方法!Python 中方法没有有重载。 ...

Lime_Tr的博客 143

手把手教你用STM32实现SPWM逆变器控制(附完整代码)

本文提供了一份基于STM32实现SPWM逆变器控制的完整实战指南。文章从硬件选型(如STM32F103C8T6、IR2104驱动器)入手,详细解析了利用定时器TIM1生成SPWM波形的核心原理与代码实现,并涵盖了驱动电路、全桥功率电路及LC滤波器的设计要点与调试技巧,旨在帮助读者从零构建一个可靠的单相全桥逆变器系统。

weixin_29208327的博客 590

Python学习记录W6-04~06:实例变量与类变量、构造函数、析构函数、私有方法&私有属性

# Author: Allenlee class Role: n = 123 #类变量 n_list = [] name = "我是类name" def __init__(self, name, role, weapon, life_value=100, money=15000): #构造函数 #在实例化时做一些类的初始化的工作 ...

up1292的博客 166

YOLOv8改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用

本文记录的是利用优化的目标检测方法研究。深度可分离卷积可以减少FLOPs,但会导致更高的内存访问,引起延迟并减慢整体计算。部分卷积利用逐点卷积处理通道冗余,减少模型计算量和内存访问量。Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks及其改进的实现代码如下: 四、创新模块 4.1 改进点⭐ 模块改进方法:直接加入(第五节讲解添加步骤)。模块加入如下:模块改进方法:基于的(第五节讲解添加步骤)。第二种改进方法是对中的进行改进,并将

Limiiiing的博客 1016

【11】GD32H7xx MPU记录

GD32H7xx系列MPU内存保护单元模块的使用记录

madao1234的博客 877

Python学习的自我理解和想法(20)

私有属性,私有方法,多态,单例设计模式

Pocker_Spades_A的博客 1655

四非人的保研之路,2024(2025届)四非计算机的保研经验分享(西南交通、苏大nlp、西电、北邮、山软、山计、电科、厦大等)

本身我就是福建人,xmu 3小时就能到家,然后导这边毕业要求容易,不想读博,达到要求就能放实习,每周打卡35h,比较自由,遂考虑。北邮弱com,联系了蛮多老师,几乎都给了考核机会,面试的老师好几位都考核人工智能基础,会问你卷积的计算,问的还是蛮细的。当时结果是暂定,以为是稳了,遂没联系其他老师,但是之后询问发现只是候补,懒得联系其他老师,928候补到,放弃。东北大学,2000人大机试,入营点送,全国巡回面试,每个人就面不到10分钟,我就被问了3个问题就结束了,候补。科研组,导师有人脉,想读博出成果可以去。

专注于AI领域前沿知识,业余爱好开发软件 4352

day12 学习笔记

Python中覆盖,多态的基本概念和思想

2302_77067662的博客 315

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Python学习之旅(核心编程基础篇012面向对象二)

Python学习之旅Python学习之旅2021.01.11一、私有属性和私有方法二、类的成员 Python学习之旅2021.01.11 指导教师:逻辑教育讲师Amy 一、私有属性和私有方法 1.介绍:只能够在对象内部使用某些属性和方法 2.私有属性:对象不公开的属性,定义时在属性名前加两个下划线,如__name 3.私有方法:对象不公开的方法,定义时在方法名前加两个下划线,如def __test(self) 4.注意:在Python中没有真正意义上的私有在访问时可以以object._类名__私有属性

qq_36195536的博客 221

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

python什么时候要缩进_不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)...

因为工作(懒惰),几年了,断断续续学习又半途而废了一个又一个技能。试着开始用博客记录学习过程中的问题和解决方式,以便激励自己和顺便万一帮助了别人呢。最近面向对象写了个Python类,到访问限制(私有属性)时竟然报错,好多天百思不得其姐,没啥破绽啊!代码如下,可就是报错!(后面有报错截图)class Person(object):def run(self):print("run")def eat(s...

weixin_39746229的博客 119

python面向对象程序设计实验总结_python面向对象编程小结

这个是跟着教程一步一步走过来的,所以记下自己学习的过程。一、类基础1、类的定义class :class (父类名):>>>classhuman:...age=0...sex=''...name=''...>>>classstudent(human):...school=''...number=0......

weixin_42501974的博客 2294

Python学习:私有属性和私有方法 以及 伪私有属性和私有方法

1、私有属性和私有方法 1.1 应用场景及定义方式 应用场景 在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被访问到 私有属性 就是 对象 不希望公开的 属性 私有方法 就是 对象 不希望公开的 方法 定义方式 在 定义属性或方法时,在 属性名或者方法名前 增加 两个下划线,定义的就是 私有 属性或方法 class Women: def ...

景墨轩 471

python中类方法、静态方法、私有属性和私有方法

一、类方法 类方法:针对类对象定义的方法 在类方法内部可以直接访问类属性或者调员工其他的类方法 类属性:针对类对象定义的属性 使用赋值语句在class关键字下可以定义类属性 类属性用于记录与这个类相关的特性 class Toy(object): # 1.使用赋值语句定义类属性,记录所有玩具的数量 count = 0 def __init__(self,name): ...

qq_44236589的博客 786

Python私有属性

封装:隐藏类的内部实现细节。防止意外修改:保护关键数据不被随意更改。防止命名冲突:在继承关系中避免属性名称冲突。保护关键数据:减少敏感信息被意外泄露的风险。提高代码的可维护性:使内部实现独立于外部代码进行修改。遵循编程规范和最佳实践:提高代码质量和一致性。虽然Python中的私有属性机制并不是绝对严格的(因为它们可以通过改写后的名称访问),但在大多数情况下,合理使用私有属性还是能够带来很多好处的。

鸭梨的博客 802

python中如何访问私有属性

访问私有化属性的方法 简单两笔记录一下今天的学习。 我们已经知道了python中属性私有化了之后其安全性增加了不少,但是在此时我们去访问私有化属性就变得稍显繁琐。先说一下这个‘繁琐’的访问吧。 通过方法调用 这是一种抓住私有化可以从类的内部来访问而出现的一种方法,从类的内部开一条路让外部有机会来调用。 形如: class Person: def __init__(self): self.__age = 18 #定义一个私有化属性 pass def getage

brolyLoveEng的博客 3505

python中类的私有属性和私有方法、类属性和类方法、静态方法、单例设计模式

旧式类(经典类)和新式类 Python中类分两种:旧式类和新式类: 新式类都从object继承,经典类不需要。 新式类是自动调用object类的 python3.几版本后可以自动调用基类(object类) 类的抽象化:类定义之后不调用是没办法输出的。 在Python 3.x中取消了经典类,默认都是新式类,并且不必显式的继承object,也就是说: class Person(objec...

dreamer_hahaha 1649

Python装饰器泛化公有和私有属性

Python装饰器为程序员提供了灵活的工具,能够动态地修改函数或类的行为,其中包括对类中公有和私有属性的访问和设置行为进行控制。本文深入探讨了装饰器在这方面的应用。通过基础的装饰器概念引入,了解了装饰器如何扩展函数和类的功能而不改变其本身。随后,文章重点讨论了泛化公有和私有属性的需求。对于程序员来说,控制公有和私有属性的访问行为对于代码的安全性和可维护性至关重要。本文详细介绍了如何使用装饰器监控和修改公有属性的访问和设置行为,以及如何对私有属性的访问行为进行定制化。

涛哥聊Python 958

Python面向对象中的类方法,静态方法以及私有属性和私有方法

1.类属性和类方法 1.定义: 类属性:针对类对象定义的方法,使用赋值语句在class关键字下可以定义类属性; 类方法:针对类对象定义的方法,在类方法内部可以直接访问类属性或者调用其他的类方法; 2.代码示例: class Toy(object): # 使用赋值语句 记录所有的玩具数量 count = 0 def __init__(self,name): ...

monster_hahaha的博客 524

Python学习记录二——类私有属性的用法

#类的书写例子 class Master(): #定义初始化信息 def __init__(self, name, ID): self. name = name self. ID = ID #定义私有属性(在属性或方法面前加__) self. __money = 100 #定义静态方法(不需要传递参...

吃不胖的粥 234
上一篇: Python学习记录 析构函数
下一篇: Python学习记录 面向对象
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值