📅  最后修改于: 2023-12-03 15:42:17.685000             🧑  作者: Mango
这是 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 类的实例,所以它们的输出结果分别是 A
和 C
。
因此,程序的输出结果为:
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=',')