# 类
# ##########先定义类
# 类是对象相似数据与功能的几何体
# 所以类体中最常见的是变量与函数的定义,但是类体其实是可以包含任意其他代码的
# 注意:类体代码是在类定义阶段就会立即执行
"""
class 类名(推荐驼峰体)
内容
"""
stu_obj = {
'stu_name': 'SEPIA',
'stu_age': 21,
'stu_gender': 'male'
}
class Student:
# 变量定义
stu_school = "oldboy"
# 类在调用阶段会自动触发__init__
# 调用时自动将stu1_obj传给第一个参数
def __init__(obj, x, y, z):
obj.stu_name = x
obj.stu_age = y
obj.stu_gender = z
# 功能定义
def tel_stu_info(stu_obj):
print('学生信息:名字: %s 年龄: %s 性别: %s' % (
stu_obj['stu_name'],
stu_obj['stu_age'],
stu_obj['stu_gender']
))
def set_info(stu_obj, x, y, z):
stu_obj['stu_name'] = x
stu_obj['stu_age'] = y
stu_obj['stu_gender'] = z
print('!!!!!!!!!!!!!!!!!!!')
# print(Student.__dict__['stu_school'])
# Student.__dict__['set_info'](stu_obj, 'SSS', 22, 'female')
# Student.__dict__['tel_stu_info'](stu_obj)
# 属性访问的语法
# 访问数据属性
print(Student.stu_school)
# 访问函数属性
Student.set_info(stu_obj, 'SSS', 22, 'female')
Student.tel_stu_info(stu_obj)
# ##########再调用类产生对象
# 调用类的过程又成为实例化,发生了三件事
# 1.先产生一个空对象
# 2.Python自动调用类中的__init__方法然后将空对象以及调用类时括号内传入的参数一同传给__init__
# 3.返回初始化完的的对象
# stu1_obj = Student()
# def init(obj, x, y, z):
# obj.stu_name = x
# obj.stu_age = y
# obj.stu_gender = z
#
#
# init(stu1_obj, 'egon', 18, 'male')
# print(stu1_obj.__dict__)
stu1_obj = Student('aaa', 22, 'male')
print(stu1_obj.__dict__)
# 总结__init__方法
# 1.会在调用类时自动触发执行,用来为对象初始化自己独有的数据
# 2.__init__内应该存放的是为对象初始化属性的功能,但是是可以存放任意其他代码的
# 想要在类调用时立刻执行的代码都可以放到该方法内
# 3.__init__方法必须返回None