AI大模型教程
一起来学习

python学习打卡day28

知识点回顾:

  1. 类的定义
  2. pass占位语句
  3. 类的初始化方法
  4. 类的普通方法
  5. 类的继承:属性的继承、方法的继承
    class Teacher:
        def __init__(self, name, age):# 初始化方法,传入了参数
            self.name = name # 外界的参数,需要通过self.xxx来复制给类自己的属性
            self.age = age
            self.subject = "English"  # 这个属性仍然是在创建时就设定好的
    
    # 创建一个Teacher对象的例子,构造方法的参数必须
    teacher = Teacher("Susan", 33) # 如果在初始化方法中设置了非默认的参数,那么外界就必须要传入才行
    print(teacher.name)  # 输出: Susan
    print(teacher.age)   # 输出: 33
    print(teacher.subject)  # 输出: English
    
    
    class Teacher:
        def __init__(self):
            self.name = "Susan"
            self.subject = "English"
            self.age = 33
        def teach_lesson(self):
            print("上课中")
        def criticize(self):
            print("批评人") 
    t = Teacher()
    t.teach_lesson() # 调用类的方法
    t.criticize()
    print(t.name)
    
    
    class Teacher:
        # 初始化方法接受参数以动态设置教师的属性
        def __init__(self, name, subject, age):
            self.name = name
            self.subject = subject
            self.age = age
    
        # 不是init的都叫做普通方法
        # 普通方法,模拟教师上课的行为
        def teach_lesson(self):
            print(f"{self.name}正在教{self.subject}。")
    
        # 另一个普通方法,模拟教师批评学生的行为
        def criticize(self, student_name):
            print(f"{self.name}正在批评{student_name}。")
    
    
    # 创建Teacher类的实例
    teacher = Teacher("Susan", "English", 33)
    
    # 调用教师的方法
    teacher.teach_lesson()
    teacher.criticize("John")#普通方法的参可以等到调用该方法的时候再传
    
    
    # 先沿用之前定义的teacher类
    class Teacher:
        def __init__(self, name, subject, age):
            self.name = name
            self.subject = subject
            self.age = age
    
        def teach_lesson(self):
            print(f"{self.name}正在教{self.subject}。")
    
        def criticize(self, student_name):
            print(f"{self.name}正在批评{student_name}。")
    
    # 继承 Teacher 类,起名特级教师
    class MasterTeacher(Teacher): # 1. 继承需要在括号中指定父类
        def __init__(self, name, subject, age, experience_years):# 2. 继承的时候需要调用父类的构造方法,所以需要传入父类的参数,同时也可以传入自己的参数
            # 调用父类的构造方法初始化基本属性
            super().__init__(name, subject, age) # 3. 调用父类的构造方法,这里的super()是一个内置函数,返回父类的实例
            # 4. 此时子类自动拥有了父类的属性和方法
            # 添加子类特有的属性
    
            self.experience_years = experience_years # 5. 子类特有的属性可以在这里定义
    
        # 重写父类方法,增强功能-----如果子类定义了与父类同名的方法,子类实例会优先调用子类的方法。
        def teach_lesson(self): # 6. 重写父类的方法
            print(f"{self.name}(特级教师)正在用高级方法教授{self.subject}。")
    
        # 新增子类特有的方法
        def give_lecture(self, topic): 
            print(f"{self.name}正在举办关于{topic}的讲座。")
    
    # 创建子类实例
    master = MasterTeacher("王教授", "数学", 45, 20)
    
    # 调用继承的方法
    master.teach_lesson()     # 调用重写的父类的方法
    master.criticize("李同学")  # 调用父类的方法,如果不修改方法,则可以直接继承父类的方法
    
    # 调用子类特有的方法
    master.give_lecture("微积分")  # 调用子类新增的方法
    
    # 定义一个父类
    class Animal:
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
        def speak(self):
            print(f"{self.name} 发出声音")
        
    class Dog(Animal):
        def speak(self):
            super().speak()  # 先调用父类的方法
            print("汪汪叫")    # 再添加子类的行为
    
    dog = Dog("旺财", 3)
    dog.speak() 

    作业

    题目1:定义圆(Circle)类

    要求:

    1. 包含属性:半径 radius。
    2. 包含方法:
    • calculate_area():计算圆的面积(公式:πr²)。
    • calculate_circumference():计算圆的周长(公式:2πr)。
    1. 初始化时需传入半径,默认值为 1。
      import math
      class Circle:
          def __init__(self,radius = 1):
              self.radius = radius
          def calculate_area(self):
              return math.pi * self.radius ** 2
          def calculate_circumference(self):
              return 2 * math.pi * self.radius
      circle = Circle(5)
      print(f"半径:{circle.radius}")       # 输出:半径:5
      print(f"面积:{circle.calculate_area():.2f}")   # 输出:面积:78.54(保留两位小数)
      print(f"周长:{circle.calculate_circumference():.2f}") # 输出:周长:31.42(保留两位小数)

      题目2:定义长方形(Rectangle)类

      1. 包含属性:长 length、宽 width。
      2. 包含方法:
      • calculate_area():计算面积(公式:长×宽)。
      • calculate_perimeter():计算周长(公式:2×(长+宽))。 is_square() 方法,判断是否为正方形(长 == 宽)。
      1. 初始化时需传入长和宽,默认值均为 1。
        class Rectangle:
            def __init__(self,length=1,width=1):
                self.length = length
                self.width = width
            def calculate_area(self):
                return self.length * self.width
            def calculate_perimeter(self):
                return 2 * (self.length + self.width)
            def is_square(self):
                if self.length == self.width:
                    return "True"
                else:
                    return "False" 
        rect = Rectangle(4, 6)
        print(f"长:{rect.length}, 宽:{rect.width}")  # 输出:长:4, 宽:6
        print(f"面积:{rect.calculate_area()}")      # 输出:面积:24
        print(f"周长:{rect.calculate_perimeter()}")  # 输出:周长:20
        print(f"是否为正方形:{rect.is_square()}")    # 输出:是否为正方形:False
        
        square = Rectangle(5, 5)
        print(f"是否为正方形:{square.is_square()}")  # 输出:是否为正方形:True

        题目3:图形工厂

        创建一个工厂函数 create_shape(shape_type, *args),根据类型创建不同图形对象:图形工厂(函数或类)

        shape_type=”circle”:创建圆(参数:半径)。

        shape_type=”rectangle”:创建长方形(参数:长、宽)。

        import math
        def create_shape(shape_type, *args):
            if shape_type=="circle":
                class Circle:
                    def __init__(self,radius = 1):
                        self.radius = radius
                    def calculate_area(self):
                        return math.pi * self.radius ** 2
                    def calculate_circumference(self):
                        return 2 * math.pi * self.radius
                return Circle(*args)
            if shape_type=="rectangle":
                class Rectangle:
                    def __init__(self,length=1,width=1):
                        self.length = length
                        self.width = width
                    def calculate_area(self):
                        return self.length * self.width
                    def calculate_perimeter(self):
                        return 2 * (self.length + self.width)
                    def is_square(self):
                        if self.length == self.width:
                            return "True"
                        else:
                            return "False" 
                return Rectangle(*args)
        
        
        shape1 = create_shape("circle", 5)
        print(shape1.calculate_circumference())  # 输出:31.42
        
        shape2 = create_shape("rectangle", 3, 4)
        print(shape2.is_square())                # 输出:False
        

        @浙大疏锦行

文章来源于互联网:python学习打卡day28

相关推荐: Stable Diffusion 入门教程,让你轻松掌握!

最近有在研究AI绘画的同学们,肯定对相关的软件有一些认知了,不知道你们有没有体验过用这些软件怎么制图?今天我们就好好来研究一下Stable Diffusion这个软件! 简单来说,Stable Diffusion(简称SD)就是一个AI自动生成图片的软件。通过…

赞(0)
未经允许不得转载:5bei.cn大模型教程网 » python学习打卡day28
分享到: 更多 (0)

AI大模型,我们的未来

小欢软考联系我们