Python3 【对象编程】水平考试:精选试题和答案

Python3 【对象编程】水平考试:精选试题和答案

Python 面向对象编程测试试卷

总分:100 分
考试时间:90 分钟


一、选择题(15题 × 2分,共30分)

  1. Python 中类的构造函数是?
    A. __init__
    B. __new__
    C. __start__
    D. __construct__
    答案:A

  2. 以下哪个是私有属性的命名方式?
    A. name
    B. _name
    C. __name
    D. name_
    答案:C

  3. 子类继承父类的语法是?
    A. class Child(Parent)
    B. class Parent(Child)
    C. class Child: Parent
    D. class Parent: Child
    答案:A

  4. 以下代码的输出是什么?

    class A:
        def show(self):
            print("A")
    class B(A):
        def show(self):
            print("B")
    obj = B()
    obj.show()
    

    A. A
    B. B
    C. 报错
    D. 无输出
    答案:B

  5. 静态方法的装饰器是?
    A. @staticmethod
    B. @classmethod
    C. @property
    D. @abstractmethod
    答案:A

  6. 以下代码的错误原因是?

    class Dog:
        def __init__(self, name):
            self.name = name
        def bark():
            print("汪!")
    dog = Dog("旺财")
    dog.bark()
    

    A. 缺少 self 参数
    B. 未定义 name
    C. 构造函数错误
    D. 语法错误
    答案:A

  7. 多态的实现依赖于?
    A. 继承和方法重写
    B. 封装
    C. 运算符重载
    D. 装饰器
    答案:A

  8. 以下代码的输出是?

    class MyClass:
        count = 0
        def __init__(self):
            MyClass.count += 1
    a = MyClass()
    b = MyClass()
    print(MyClass.count)
    

    A. 0
    B. 1
    C. 2
    D. 报错
    答案:C

  9. 以下哪个方法用于字符串表示对象?
    A. __repr__
    B. __str__
    C. __format__
    D. __print__
    答案:B

  10. 以下代码的错误是?

    class A:
        def __init__(self, x):
            self.x = x
    class B(A):
        def __init__(self, y):
            self.y = y
    obj = B(5)
    print(obj.x)
    

    A. 未调用父类 __init__
    B. 变量未定义
    C. 语法错误
    D. 无错误
    答案:A

  11. 以下代码的输出是?

    class Vector:
        def __init__(self, x, y):
            self.x = x
            self.y = y
        def __add__(self, other):
            return Vector(self.x + other.x, self.y + other.y)
    v1 = Vector(1, 2)
    v2 = Vector(3, 4)
    v3 = v1 + v2
    print(v3.x)
    

    A. 1
    B. 3
    C. 4
    D. 报错(未定义 __str__
    答案:C

  12. 抽象类的装饰器是?
    A. @abstract
    B. @abstractmethod
    C. @staticmethod
    D. @classmethod
    答案:B

  13. 以下代码的输出是?

    class Parent:
        def greet(self):
            print("Parent")
    class Child(Parent):
        def greet(self):
            super().greet()
            print("Child")
    obj = Child()
    obj.greet()
    

    A. Parent
    B. Child
    C. Parent\nChild
    D. 报错
    答案:C

  14. 以下代码的错误是?

    class MyClass:
        @property
        def value(self):
            return self._value
    obj = MyClass()
    obj.value = 10
    

    A. 未定义 _value
    B. 缺少 @value.setter
    C. 语法错误
    D. 无错误
    答案:B

  15. 单例模式的目的是?
    A. 限制类只能创建一个实例
    B. 隐藏私有属性
    C. 实现多态
    D. 动态扩展功能
    答案:A


二、填空题(10题 × 3分,共30分)

  1. 在 Python 中,用于初始化对象的方法是 ______
    答案:__init__

  2. 定义类方法时,装饰器是 ______
    答案:@classmethod

  3. 类的私有属性命名规则是添加 ______ 前缀。
    答案:双下划线(__

  4. 继承多个父类时,方法解析顺序由 ______ 决定。
    答案:MRO(Method Resolution Order)

  5. 以下代码的输出是:

    class A:
        def __init__(self):
            self.x = 1
    class B(A):
        def __init__(self):
            super().__init__()
            self.y = 2
    obj = B()
    print(obj.x + obj.y)
    

    答案:3

  6. 运算符 + 重载的方法是 ______
    答案:__add__

  7. 动态绑定实例方法需要使用的模块是 ______
    答案:types.MethodType

  8. 上下文管理器的两个特殊方法是 ____________
    答案:__enter____exit__

  9. 以下代码的输出是:

    class MyClass:
        def __getattr__(self, name):
            return f"{name} 不存在"
    obj = MyClass()
    print(obj.age)
    

    答案:age 不存在

  10. 实现抽象类的模块是 ______
    答案:abc(或 from abc import ABC, abstractmethod


三、编程题(5题 × 8分,共40分)

  1. 定义一个 Student 类,包含属性 namescore,并实现一个方法 get_grade,返回“优秀”(≥90)、“及格”(≥60)或“不及格”。

    class Student:
        def __init__(self, name, score):
            self.name = name
            self.score = score
        def get_grade(self):
            if self.score >= 90:
                return "优秀"
            elif self.score >= 60:
                return "及格"
            else:
                return "不及格"
    # 测试
    s = Student("Alice", 85)
    print(s.get_grade())  # 输出: 及格
    
  2. 实现一个单例模式的类 Singleton

    class Singleton:
        _instance = None
        def __new__(cls):
            if cls._instance is None:
                cls._instance = super().__new__(cls)
            return cls._instance
    # 测试
    a = Singleton()
    b = Singleton()
    print(a is b)  # 输出: True
    
  3. 定义一个 BankAccount 类,包含私有属性 __balance,并实现存款和取款方法。

    class BankAccount:
        def __init__(self):
            self.__balance = 0
        def deposit(self, amount):
            self.__balance += amount
        def withdraw(self, amount):
            if self.__balance >= amount:
                self.__balance -= amount
            else:
                print("余额不足")
        def get_balance(self):
            return self.__balance
    # 测试
    acc = BankAccount()
    acc.deposit(100)
    acc.withdraw(30)
    print(acc.get_balance())  # 输出: 70
    
  4. 定义一个 Shape 抽象类,要求子类必须实现 area 方法。

    from abc import ABC, abstractmethod
    class Shape(ABC):
        @abstractmethod
        def area(self):
            pass
    class Circle(Shape):
        def __init__(self, radius):
            self.radius = radius
        def area(self):
            return 3.14 * self.radius ** 2
    # 测试
    c = Circle(3)
    print(c.area())  # 输出: 28.26
    
  5. 定义一个 Vector 类,支持向量加法(+)和向量长度计算(__len__)。

    class Vector:
        def __init__(self, x, y):
            self.x = x
            self.y = y
        def __add__(self, other):
            return Vector(self.x + other.x, self.y + other.y)
        def __len__(self):
            return int((self.x**2 + self.y**2)**0.5)
    # 测试
    v1 = Vector(3, 4)
    print(len(v1))  # 输出: 5
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值