Python 作业错题整理:作业5-用类实现抽象和封装
作业5-用类实现抽象和封装
1.Python中,不能利用对象访问类的私有成员。(T/F)
这个说法是 F(错误) 的。
在 Python 中,并没有真正严格的“私有成员”。
通常我们约定在属性或方法名前加两个下划线 __
(例如 __private_var
)来表示“私有”,但这实际上只是触发了 名称修饰(name mangling),而不是完全禁止访问。
私有成员命名规则
在类中,以双下划线开头且不以双下划线结尾的属性/方法,会被 Python 自动改名(name mangling),规则是:_类名__属性名
。
例如:
class MyClass:
def __init__(self):
self.__private = 10
obj = MyClass()
你不能直接用 obj.__private
访问,因为会报 AttributeError
。
但你可以用 obj._MyClass__private
访问到它。
所以 Python 中仍然可以访问这些“私有成员”,只是需要知道改名后的名称。
因此题目说 “不能利用对象访问类的私有成员” 是错误的。
2.Python中一切内容都可以称为对象。(T/F)
分析:
在 Python 中,所有的数据(包括数字、字符串、函数、类、模块等)都是对象,或者与对象相关。这是 Python 的设计哲学之一 —— “一切皆对象”。
因此这个说法是正确的。
答案:T
3.在Python中定义类时实例方法的第一个参数名称必须是self。(T/F)
分析:
Python 规定实例方法的第一个参数必须代表实例本身,但这个参数的名称不强制叫 self
,你可以用任何合法的参数名(比如 this
、me
等),只是约定俗成用 self
。
因此“必须”是 self 是错误的。
答案:F
4.如何输入空格隔开的数字并转为列表?
a = list(map(int, input().split()))
版权申明
本文系作者 @xiin 原创发布在To Future$站点。未经许可,禁止转载。
暂无评论数据