# 学生类
# class Student:
# # def __init__(self, name, age, gender):
# # '''
# # 该方法就一个功能>>>:给对象添加独有的数据
# # :param name:
# # :param age:
# # :param gender:
# # '''
# # self.name = name # obj.__dict__['name'] = name
# # self.age = age # obj.__dict__['age'] = age
# # self.gender = gender
# # 学生类公共的数据
# school = '清华大学'
# # 学生类公共的功能
# def choose_course(self):
# print('学生选课功能')
# obj1 = Student()
# print(obj1.__dict__)
# 给对象添加特征属性
'''方案1:逐步添加'''
# obj1.name = 'king'
# obj1.age = 18
# obj1.gender = 'male'
# print(obj1.name)
# 这样写如果要创建多个对象,并添加各自的特征属性代码会冗余
'''方案2:将冗余的添加步骤封装成函数'''
# def init(obj, name, age, gender):
# obj.name = name
# obj.age = age
# obj.gender = gender
# init(obj1, 'king', 18, 'male')
# print(obj1.name)
# print(obj1.age)
# print(obj1.gender)
'''方案3:简单的封装成'''
# class Student:
# def get_obj(obj, name, age, gender):
# '''
# 该方法就一个功能>>>:给对象添加独有的数据
# :param name:
# :param age:
# :param gender:
# '''
# obj.name = name # obj.__dict__['name'] = name
# obj.age = age # obj.__dict__['age'] = age
# obj.gender = gender
# # 学生类公共的数据
# school = '清华大学'
# # 学生类公共的功能
# def choose_course(self):
# print('学生选课功能')
# obj1 = Student()
# # print(obj1.__dict__)
# # obj1.get_obj(obj1, 'king', 18, 'male') # 只能写3个参数,第一个形参是会自动将对象传入的,不需要写明
# Student.get_obj(obj1, 'king', 18, 'male')
# print(obj1.name)
'''方案4:类中针对给对象创建独有数据的函数名 专门定义了一个固定的方法'''
# class Student:
# def __init__(self, name, age, gender):
# '''
# 该方法就一个功能>>>:给对象添加独有的数据
# :param name:
# :param age:
# :param gender:
# '''
# self.name = name # obj.__dict__['name'] = name
# self.age = age # obj.__dict__['age'] = age
# self.gender = gender
# # 学生类公共的数据
# school = '清华大学'
# # 学生类公共的功能
# def choose_course(self):
# print('学生选课功能')
# obj1 = Student('king', 18, 'male') # 由于python给我们准备好的__init__函数会自动执行,并传入对象,因此在创建对象的时候就可以直接写入特征属性了
# print(obj1.name)
'''
类中的__init__方法会在类产生对象的时候自动执行
类产生对象的具体步骤
1.先创建一个没有独有数据的空对象 {}
2.将空对象和类括号内传入的数据一并交给__init__执行
__init__的第一个参数就是对象本身
3.将创建好的对象自动返回
python提供这种方式是为了减少代码的编写
ps:针对括号内第一个形参self其实就是一个普通的变量名而已
只不过该变量名将来专门接受对象的,所以给它起了个固定的名字叫self
'''