0%

第五周作业

exercise1:修改类属性值的两种方式?并写出具体的代码

类属性:

和java相似的是,就是这一类公共的属性,修改这一个其他是这个类(不是同一个对象的)都会变

不同点在于java中类属性是用static修饰的,就是类属性和普通属性之间由严格的界定,而python没有

方法

  1. 直接通过类名修改类属性的值。
  2. 通过实例对象修改类属性的值(这种方式会在实例中创建同名的实例属性,并覆盖类属性)。

比如下面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class MyClass:
class_attr = "I am a class attribute" # 类属性

# 通过类名修改类属性的值
MyClass.class_attr = "Modified class attribute"

# 输出修改后的类属性值
print(MyClass.class_attr) # 输出:"Modified class attribute"

# 创建实例对象
obj = MyClass()

# 通过实例对象修改类属性的值
obj.class_attr = "New class attribute value"

# 输出实例对象的属性值
print(obj.class_attr) # 输出:"New class attribute value"

# 输出类属性的值
print(MyClass.class_attr) # 输出:"Modified class attribute"

exercise2

1
2
2.定义学生类student,在该类中使用构造函数实现对学生信息(姓名、年龄、性别)
的初始化,然后针对类的各个属性建立相应的方法来获取属性的值

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
'''
2.定义学生类student,在该类中使用构造函数实现对学生信息(姓名、年龄、性别)
的初始化,然后针对类的各个属性建立相应的方法来获取属性的值
'''
class student():
name = ''
age = 0
sex = ''
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
def get_name(self):
return self.name
def get_age(self):
return self.age
def get_sex(self):
return self.sex

studentA = student("xiaoming", 19, "男")

print(studentA.get_name())
print(studentA.get_age())
print(studentA.get_sex())

exercise3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
3.定义一个学生类。有下面的类属性:
1 姓名
2 年龄
3 成绩(语文,数学,英语)[每课成绩的类型为整数]
类方法:
1 获取学生的姓名:get_name() 返回类型:str
2 获取学生的年龄:get_age() 返回类型:int
3 返回3门科目中最高的分数。get_course() 返回类型:int
写好类以后,可以创建对象测试下:
stu = Student('zhangming',20,[69,88,100])
返回结果:
zhangming
20
100

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
"""
3.定义一个学生类。有下面的类属性:
1 姓名
2 年龄
3 成绩(语文,数学,英语)[每课成绩的类型为整数]
类方法:
1 获取学生的姓名:get_name() 返回类型:str
2 获取学生的年龄:get_age() 返回类型:int
3 返回3门科目中最高的分数。get_course() 返回类型:int
写好类以后,可以创建对象测试下:
stu = Student('zhangming',20,[69,88,100])
返回结果:
zhangming
20
100
"""
class Student:
def __init__(self, name, age, scores):
self.name = name
self.age = age
self.scores = scores

def get_name(self):
return self.name

def get_age(self):
return self.age

def get_course(self):
return max(self.scores)

# 创建学生对象并测试
stu = Student('zhangming', 20, [69, 88, 100])
print(stu.get_name())
print(stu.get_age())
print(stu.get_course())

exercise4

1
2
3
4.练习:
有一个学校,人数为0,入职的老师和学生,人数增加1,老师要显示姓名和工号,
学生要显示姓名和成绩,老师和学生入职后都需要做自我介绍

知识点

继承:teacher和student继承自people

通过修改__str__方法来打印信息

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
"""
4.练习:
有一个学校,人数为0,入职的老师和学生,人数增加1,老师要显示姓名和工号,
学生要显示姓名和成绩,老师和学生入职后都需要做自我介绍
"""
class people():
def __init__(self, name, id):
self.name = name
self.id = id
def introduction(self):
print(f"大家好,我是{self.name}")

class teacher(people):
def __init__(self, name, id):
super(teacher, self).__init__(name, id)
def __str__(self):
msg = f"姓名:{self.name} 工号:{self.id}"
return msg
class student(people):
def __init__(self, name, id, scores):
self.scores = scores
super(student, self).__init__(name, id)
def __str__(self):
msg = f"姓名:{self.name} 学号:{self.id} 成绩:{self.scores}"
return msg

class school():
def __init__(self):
self.total_num = 0
self.teachers = []
self.students = []
def add_teachers(self, teacher):
self.teachers.append(teacher)
self.total_num += 1
print(teacher)
teacher.introduction()
def add_student(self, student):
self.students.append(student)
self.total_num += 1
print(student)
student.introduction()

jinan_university = school()
teacherA = teacher("xiazhihua", "0001")
studentA = student("ztb", "123", [89, 89, 89])
jinan_university.add_teachers(teacherA)
jinan_university.add_student(studentA)