📜  门| GATE-CS-2015(模拟测试)|问题10(1)

📅  最后修改于: 2023-12-03 15:42:17.685000             🧑  作者: Mango

门| GATE-CS-2015(模拟测试)|问题10

这是 GATE-CS-2015(模拟测试) 中的第10道问题。该问题希望程序员能够根据给定的代码,判断程序的输出结果。

题目描述:

class A:
    def __str__(self):
        return A.__name__

class B(A):
    pass

class C(A):
    def __str__(self):
        return C.__name__

objA, objB, objC = A(), B(), C()
print(objA, objB, objC, sep=',')

请问程序的输出结果是什么?

解析

这道题目主要考察的是面向对象编程的知识点。其中,程序定义了三个类,分别为 A、B 和 C,其中 B 和 C 都继承自 A。

在这三个类中,都定义了一个 __str__() 方法,用于对象的字符串表示输出。其中,类 A 的 __str__() 方法返回了 A 类的名称,类 C 的 __str__() 方法返回了 C 类的名称。

在程序的最后一行,分别创建了 objA、objB 和 objC 三个对象,并将它们通过逗号连接输出,这就需要调用它们的 __str__() 方法来获得字符串表示。由于 objA 是 A 类的实例,所以输出 A;而 objB 和 objC 分别是 B 类和 C 类的实例,所以它们的输出结果分别是 AC

因此,程序的输出结果为:

A,A,C
代码实现

下面是 Python 3 的实现代码:

class A:
    def __str__(self):
        return A.__name__

class B(A):
    pass

class C(A):
    def __str__(self):
        return C.__name__

objA, objB, objC = A(), B(), C()
print(objA, objB, objC, sep=',')

该代码的输出结果为:

A,A,C

代码片段:

```python
class A:
    def __str__(self):
        return A.__name__

class B(A):
    pass

class C(A):
    def __str__(self):
        return C.__name__

objA, objB, objC = A(), B(), C()
print(objA, objB, objC, sep=',')