Python的类和方法——成员可见性_python 类成员可见性

130 阅读4分钟

我们继续接着类和对象这个话题聊。

1.类方法

使用装饰器@classmethod。第一参数必须是当前类对象,该参数名一般约定为「cls」,当然cls也可以换成其他名字,通过它来传递类的属性和方法(不能传实例的属性和方法)

如下场景:假设现有一个学生类和班级类,想要实现:执行班级人数增加的操作、获得班级总人数。

 

2.静态方法

使用装饰器@staticmethod,静态方法是类中的函数,不需要实例。静态方法主要是用来存放逻辑性的代码,逻辑上属于类,但是和类本身没有关系,也就是说在静态方法中,不会涉及到类中的属性和方法的操作。

 

我的理解是,静态方法是个独立的、单纯的函数,它仅仅托管于某个类的名称空间中,便于使用和维护。可以用静态方法的地方,都可以用类方法代替。但不要经常使用静态方法,因为和面向对象关联性很弱。

3.成员的可见性:公开和私有

默认情况下,Class内部创建的属性和方法,外部代码是可以通过实例调用直接操作的;但有时候为了保证封装性,我们不希望这些内部属性被外部直接访问。这就需要设置成员可见性。

设置方法:在属性或方法名前面添加两个下划线「__」,成员私有化的作用,确保外部代码不能随意修改对象内部的状态,增加了代码的安全性。

应用场景:定义一个学生类名,在这个类下面,定义分数这个对象,现要给每个学生打一个分数,如果我们允许从外部修改分数,那么如果分数修改为-1时,就与逻辑不符,所以,我们需要通过对变量私有化,以及在类的内部定义一个方法,通过对方法修改变量,就可以对输入的分数做出正确判断。

4.总结

Python中的构造函数前面有双下划线,但它却可以从外部访问,因为在init的后面也有双下划线。所以,我们命名时不推荐使用__name__、__score__这样的形式。

双下划线的实例变量并不是一定不能从外部访问

(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

了解详情:docs.qq.com/doc/DSnl3ZG…