MST

星途 面试题库

面试题:Python面向对象编程中if语句与类属性的结合应用

在Python面向对象编程中,定义一个名为`Shape`的基类,包含属性`area`。再定义`Rectangle`和`Circle`两个子类继承自`Shape`。要求在子类的构造函数中,根据传入参数的不同使用`if`语句来正确初始化`area`属性,并编写方法来打印`area`的值。请给出完整代码实现。
46.1万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
import math


class Shape:
    def __init__(self):
        self.area = None


class Rectangle(Shape):
    def __init__(self, length, width):
        super().__init__()
        if length > 0 and width > 0:
            self.area = length * width

    def print_area(self):
        if self.area is not None:
            print(f"矩形的面积是: {self.area}")
        else:
            print("面积未正确初始化")


class Circle(Shape):
    def __init__(self, radius):
        super().__init__()
        if radius > 0:
            self.area = math.pi * radius * radius

    def print_area(self):
        if self.area is not None:
            print(f"圆形的面积是: {self.area}")
        else:
            print("面积未正确初始化")


你可以使用以下方式调用:

rect = Rectangle(5, 3)
rect.print_area()
cir = Circle(4)
cir.print_area()