类是对象相似数据与功能的集合体
注意:类体代码是在类定义阶段就会立即执行,会产生类的名称空间
class Student:
# 1、变量的定义
stu_school='oldboy'
# 2、功能的定义
def tell_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
二、访问类中的属性
1.访问数据属性
Student.stu_school
2.访问函数属性
Student.set_info
三、类的实例化
stu1_obj=Student()
stu2_obj=Student()
stu3_obj=Student()
调用类的过程又称之为实例化,发生了三件事
1、先产生一个空对象
2、python会自动调用类中的__init__方法然将空对象已经调用类时括号内传入的参数一同传给__init__方法
3、返回初始完的对象
四、init
总结init方法 1、会在调用类时自动触发执行,用来为对象初始化自己独有的数据 2、init内应该存放是为对象初始化属性的功能,但是是可以存放任意其他代码,想要在 类调用时就立刻执行的代码都可以放到该方法内 3、init方法必须返回None
五、类的数据查找
1.类的数据属性是共享给所有对象用的,大家访问的地址都一样
print(id(Student.stu_school))
print(id(stu1_obj.stu_school))
print(id(stu2_obj.stu_school))
print(id(stu3_obj.stu_school))
# 1877338288176
# 1877338288176
# 1877338288176
# 1877338288176
2、类中定义的函数主要是给对象使用的,而且是绑定给对象的,虽然所有对象指向的都是相同的功能, 但是绑定到不同的对象就是不同的绑定方法,内存地址各不相同
Student.tell_stu_info(stu1_obj)
Student.tell_stu_info(stu2_obj)
Student.tell_stu_info(stu3_obj)
stu1_obj.tell_stu_info()
stu2_obj.tell_stu_info()
stu3_obj.tell_stu_info()
上面两种方法的结果相同——谁来调用绑定方法就会将谁当做第一个参数自动传入!