Python训练营打卡Day28(2025.5.17)

知识点回顾:

  1. 类的定义
  2. pass占位语句
  3. 类的初始化方法
  4. 类的普通方法
  5. 类的继承:属性的继承、方法的继承
class ClassName: # 类名通常遵循大驼峰命名法 (UpperCamelCase),即每个单词的首字母都大写,class是定义类的关键词
    # 类的代码块 (可以包含属性定义、方法定义等)
    pass # pass 是一个占位符,表示这里暂时没有任何内容


class ClassName: # 类名通常遵循大驼峰命名法 (UpperCamelCase),即每个单词的首字母都大写,
    # # 类的代码块 (可以包含属性定义、方法定义等)
    # pass # pass 是一个占位符,表示这里暂时没有任何内容


# 条件语句
x = 10
if x > 5:
    pass# 如果这里是空的,就会报错,可以注释试一下,即使x=1也会报错
else:
    print("x is not greater than 5")


# 循环语句
for i in range(3):
    pass # 循环体是空的


try:
    # 尝试执行的代码
    print("hh")
except SomeError:
    pass# 捕获到异常后,这里需要代码
finally:
    pass# 无论如何都会执行的代码块,也需要内容


class Teacher: # 这里不需要括号
  def __init__(self): #初始化方法,这里没有传入参数
    self.name = "Susan" # 给类定义一些属性
    self.subject = "English"
    self.age = 33

Teacher = Teacher() # 创建一个Teacher类的实例
print(Teacher.name) # 输出: Susan


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("微积分")  # 调用子类新增的方法


# super()函数 除了在构造方法中使用,还可以在其他方法中使用

# 定义一个父类
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() 



 @浙大疏锦行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值