ad

打开《Python 编程与应用实践》_成为Python大佬_6.7 私有化

网友投稿 113 2023-11-13

【摘要】 本书摘自《Python 编程与应用实践》一书中第6章,第7节,由冯伟森,王建,杨宁主编。

6.7 私有化

在 Python 中,通常情况下属性都是 “public”, 也就是公有的,类所在模块和导入了 类所在模块的其他模块的代码都可以访问到这些属性。但是并不是所有的属性我们都可以 去访问,它们好像被隐藏了起来,这些我们称为私有化的属性。

Python 为类元素(属性和方法)的私有性提供初步的形式,我们用x 代表变量名或 方法名:

(1)x: 表示公有变量(或方法)。

(2) _x: 单前置下划线,表示私有化属性或方法。

(3)__x: 双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问。

打开《Python 编程与应用实践》_成为Python大佬_6.7 私有化

(4) x : 双前后置下划线,用户名字空间的魔法对象或属性。例如, __init

(5)x_: 单后置下划线,用于避免与Python 关键词的冲突。

公有方法和私有方法一般指的是属于对象的方法,私有方法的名字以两个下划线__ 开始。每个对象都拥有自己的公有方法和私有方法,在这两类方法中都可以访问属于类和 对象的成员;公有方法可以直接通过对象名调用,私有方法不能通过对象名直接调用,只 能在实例方法中通过 self 调用或在外部通过Python 支持的特殊方法调用。

尽管 Python 没有在语法上把 private,protected,friend 或 protected friend 等特征内

建于语言中,但是可以按照用户的需要严格地定制访问权。

习 题

1. 内建函数 type() 做什么? type() 返回的对象是什么?

2. 你认为type(a)==type(b) 和type(a)is type(b)之间的不同是什么?为什么会选择 后者?函数 isinstance() 与这有什么关系?

3. 简单叙述一下类和实例对象的区别。

4. 为什么有的类要写 init__ 方法?它的作用是什么?

5. 怎样定义一个类的超类?

6. 查看整数3和字符串'hello'的对象类型,打印输出查看的结果。

7. 创建一个名为 Thing 的空类并将其打印出来。

8. 创建一个新的类 Thing2, 将abc 赋值给类特性 letters, 打印letters。 9. 定义一个学生类。有下面的类属性:

(1)姓名。

(2)年龄。

(3)成绩(语文,数学,英语)[每科成绩的类型为整数]。

类方法:

(1)获取学生的姓名。get_name() 返回类型: str。

(2)获取学生的年龄。get_age() 返回类型: int。

(3)返回3门科目中最高的分数。get_course() 返回类型:int。

写好类以后,可以定义2个同学测试一下:

zm=Student('zhangming',20,[69,88,100])

返回结果:

zhangming

20

100

10. 编写一个函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。 如果大于5,则输出对象长度;否则,输出"NO"。

11. 编写一个 person 类,包含属性姓名、工作和工资,并输入"Sue Jones","dev", 100000进行验证。

12. 创建一个名为 Element 的类,它包含实例特性 name 、symbol 和 number 。使用 'Hydrogen'、'H'和1实例化一个对象,打印输出该对象的 name 属性。

13. 创建一个字典,包含这些键值对:'name':'Hydrogen'、'symbol':'H'和'number': 1。然后用这个字典实例化 Element 类的对象 hydrogen, 打印输出该对象的 name 属 性值。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:实战之路《Excel 数据处理与分析实战宝典_第2版》_5.1 函数与公式基础
下一篇:学习《Python网络爬虫 从入门到精通》_掌握爬虫的精髓_9.1 爬虫框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~