Python基础教程之数据封装、类方法和静态方法

数据封装

面向对象编程的一个关键部分是封装,它涉及将相关变量和函数打包到一个简单易用的对象(类的一个实例)中。

一个相关的概念是隐藏数据,它隐藏了类的实现细节,并提供一个干净的标准接口。

在其它编程语言中,通常是通过私有方法和属性完成的,这些方法和属性阻止了对类中某些方法和属性的外部访问。

Python 的设计哲学略有不同。它认为 "我们都是成年人",这意味着你不应该对类的访问设计任意的限制。因此,没有任何方法强制方法或属性是严格私有的。

但是,还是有一些方法可以阻止人们访问类的内部私有成员。

弱私有方法和属性在开头只有一个下划线。

这表明它们是私有的,不应该被外部代码使用。但是,它们基本上只有一个约定,并不阻止外部代码访问它们。

它唯一的实际效果是,从模块导入 from module_name import * 不会导入以单个下划线开头的变量。

Python基础教程之数据封装、类方法和静态方法

 

运行结果:

Python基础教程之数据封装、类方法和静态方法

 

上面的例子,属性 __Name 标记为私有,但是还是可以被外部代码访问。

弱私有方法和属性的名称开头有双下划线,这意味着它们不能从类之外被访问。

这样做的目的并不是确保它们是私有的,而是如果又具有相同名称的方法和属性的子类,则可以避免出现 bug

使用这种方法直接访问是无法访问的,但可以通过不同的名称访问。Name 类的私有方法__privatemethod 可以通过 _Name__privatemethod 方法进行外部访问。

Python基础教程之数据封装、类方法和静态方法

 

运行结果:

Python基础教程之数据封装、类方法和静态方法

 

基本上,Python 通过内部更改名称以包含类名来保护这些成员。

更多Python视频、源码、资料加群683380553免费获取

 

类方法

目前为止,我们所看到调用对象的方法都是有类的一个实例调用的,然后传递给方法的 self参数。

类方法是不同的 -- 它们由一个类调用,该类被传递给方法的 cls 参数。

类方法的常见用途是工厂方法,它们使用与传递的类构造函数的参数不同的参数来实例化实例。

类方法被装饰符 @classmethod 标记为类方法。

Python基础教程之数据封装、类方法和静态方法

 

运行结果:

Python基础教程之数据封装、类方法和静态方法

 

lass_method_create 是类方法,它不在类的实例上调用。而是通过类的方法调用,它返回类 cls 的一个新对象。

从技术上将,self 和 cls 参数只是约定;它可以更改为其他任何东西。但是,这种约定被大多数人遵循。

静态方法

静态方法与类方法相似,只是没有任何附加参数比如 self 和 cls。它们与属于类函数的使用方法相同。它们被静态方法装饰器 @staticmethod 定义。

Python基础教程之数据封装、类方法和静态方法

 

运行结果:

Python基础教程之数据封装、类方法和静态方法

 

静态方法的行为类似于普通函数,除了不可以从类的实例中调用它们。

鸡汤

“为什么在这个世界上,有95%的人会无法成功,而只有那少数的5%会成功,因为大多数人的心里存在着这三个字:不可能。”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python中的方法静态方法是在级别上执行操作的工具。方法可以使用的属性和方法,而静态方法则不能。使用这些方法可以更好地组织代码,并提高代码的可读性和可维护性。\[2\] 方法是定义在上的方法,可以通过的实例来调用。方法使用@classmethod装饰器进行标识,它的第一个参数是本身,通常被命名为"cls"。方法可以访问的属性和方法,并且可以在的实例化之前或之后执行一些操作。\[1\] 静态方法也是定义在上的方法,可以通过的实例来调用。静态方法使用@staticmethod装饰器进行标识,它不需要或实例作为第一个参数。与方法不同,静态方法不能访问或实例的属性和方法静态方法通常用于定义与无关的辅助函数,或者在不需要访问的属性和方法时执行一些操作。\[3\] 总结来说,方法静态方法都是在级别上执行操作的方法,但方法可以访问的属性和方法,而静态方法不能。选择使用哪种方法取决于具体的情况,如果需要访问的属性和方法,则使用方法,如果不需要访问的属性和方法,则使用静态方法。\[2\] #### 引用[.reference_title] - *1* [Python 实例方法方法静态方法](https://blog.csdn.net/lihao21/article/details/79762681)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Python-方法静态方法](https://blog.csdn.net/weixin_44412085/article/details/129968953)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值