DAY 28 类的定义和方法
目录
- DAY 28 类的定义和方法
- 1.类的定义
- 2.pass占位语句
- 3.类的初始化方法
- 4.类的普通方法
- 5.类的继承:属性的继承、方法的继承
- 作业
- 题目1:定义圆(Circle)类
- 题目2:定义长方形(Rectangle)类
- 题目3:图形工厂
DAY 28 类的定义和方法
1.类的定义
2.pass占位语句
class ClassName:pass
class ClassName:
Cell In[2], line 1class ClassName:^
IndentationError: expected an indented block
x = 10
if x > 5:pass
else:print('x is not greater than 5')
for i in range(3):pass
try:print('hh')
except SomeError:pass
finally:pass
hh
3.类的初始化方法
class Teacher:def __init__(self):self.name = 'Susan'self.subject = 'English'self.age = 33Teacher = Teacher()print(Teacher.name)
Susan
class Teacher:def __init__(self, name, age):self.name = nameself.age = ageself.subject = 'English'teacher = Teacher('Susan', 33)print(teacher.name)
print(teacher.age)
print(teacher.subject)
Susan
33
English
4.类的普通方法
class Teacher:def __init__(self):self.name = 'Susan'self.subject = 'English'self.age = 33def teach_lesson(self):print('上课中')def criticize(self):print('批评人')t = Teacher()
t.teach_lesson()
t.criticize()print(t.name)
上课中
批评人
Susan
class Teacher:def __init__(self, name, subject, age):self.name = nameself.subject = subjectself.age = agedef teach_lesson(self):print(f'{self.name} 正在教 {self.subject}')def criticize(self, student_name):print(f'{self.name} 正在批评 {student_name}')teacher = Teacher('Susan', 'English', 33)
teacher.teach_lesson()
teacher.criticize('John')
Susan 正在教 English
Susan 正在批评 John
5.类的继承:属性的继承、方法的继承
class Teacher:def __init__(self, name, subject, age):self.name = nameself.subject = subjectself.age = agedef teach_lesson(self):print(f'{self.name} 正在教 {self.subject}')def criticize(self, student_name):print(f'{self.name} 正在批评 {student_name}')class MasterTeacher(Teacher):def __init__(self, name, subject, age, experience_years):super().__init__(name, subject, age)self.experience_years = experience_yearsdef teach_lesson(self):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 = nameself.age = agedef speak(self):print(f'{self.name} 发出声音')class Dog(Animal):def speak(self):super().speak()print('汪汪叫')dog = Dog('旺财', 3)
dog.speak()
旺财 发出声音
汪汪叫
作业
题目1:定义圆(Circle)类
import mathclass Circle:def __init__(self, radius=1):self.radius = radiusdef calculate_area(self):return math.pi * self.radius**2def calculate_circumference(self):return 2 * math.pi * self.radiuscircle = Circle(5)print(f'半径: {circle.radius}')
print(f'面积: {circle.calculate_area():.2f}')
print(f'周长: {circle.calculate_circumference():.2f}')
半径: 5
面积: 78.54
周长: 31.42
题目2:定义长方形(Rectangle)类
class Rectangle:def __init__(self, length=1, width=1):self.length = lengthself.width = widthdef calculate_area(self):return self.length * self.widthdef calculate_perimeter(self):return 2 * (self.length + self.width)def is_square(self):return self.length == self.widthrect = Rectangle(4, 6)
square = Rectangle(5, 5)print(f'长: {rect.length}, 宽: {rect.width}')
print(f'面积: {rect.calculate_area()}')
print(f'周长: {rect.calculate_perimeter()}')
print(f'是否为正方形: {rect.is_square()}')
print(f'是否为正方形: {square.is_square()}')
长: 4, 宽: 6
面积: 24
周长: 20
是否为正方形: False
是否为正方形: True
题目3:图形工厂
def create_shape(shape_type, *args):if shape_type == 'circle':return Circle(*args)elif shape_type == 'rectangle':return Rectangle(*args)else:raise ValueError('Invalid shape type')shape1 = create_shape('circle', 5)
shape2 = create_shape('rectangle', 3, 4)print(f'{shape1.calculate_circumference():.2f}')
print(shape2.is_square())
31.42
False
@浙大疏锦行