一:类
对象是特征与技能的结合体,那类就是一系列对象相同的特征与技能的结合体
2、在现实世界:
一定先有对象,后来随着人类文明的发展总结出来的类对象是具体存在的,而类只是一种抽象概念
3、在程序中,务必保证:先定义类,后调用类来产生对象
现实生活中的对象:
对象1: 特征: school='oldboy' name='马冬梅' age=18 sex=‘female’ 技能: 学习 选课 对象2: 特征: school=‘oldboy‘ name=’ryan‘ age=18 sex=‘male' 技能: 学习 选课
程序中的类
class oldboy: #用变量表示特征 school=‘oldboy’ def __init__(self, name,age,sex): self.name=name self.age=age self.sex=sex #用函数表示技能 def learn(self): pring('is learning') def choose(self): print('choose course') #在程序中,必须先定义lei--------》调用---------》对象
调用:
stu1=OldboyStudent('马冬梅',18,’female‘) # stu1.NAME='马冬梅' # stu1.AGE=18 # stu1.SEX="female" # stu2=OldboyStudent(’ryan‘,18,’male‘) # stu2.NAME='ryan' # stu2.AGE=18 # stu2.SEX="male" print(stu1.name,stu1.school)
print(stu2.name,stu2.school)
调用发生哪些事情:
1、首先会产生一个空对象stu1
2、会自动触发类内部的__init__函数
3、然后将空对象stu1连同调用类时括号内的参数组成(stu1,‘马冬梅’,18,‘female’)
二:对象的使用
school=‘xxxxxxxxxxxx’ class OldboyStudent: school='oldboy' def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex #self=stu1 def learn(self): print('%s is learning' %self.name) def choose(self,course): print('%s is choosing %s' %(self.name,course))
调用类=======》产生类的对象,该对象也可以称之为类的一个实例,调用类的过程也称之为类的实例化
stu1=OldboyStudent('李三胖',18,‘male’)
# OldboyStudent.country='CHINA' # print(OldboyStudent.country) # print(OldboyStudent.__dict__) # print(stu1.__dict__) # print(stu1.__dict__['name']) # print(stu1.name) # print(stu1.school) # print(school) stu2=OldboyStudent('王大炮',28,'male') # print(stu2.__dict__) # 类内部定义的变量是给所有对象共享,所有对象指向的都是同一个内存地址 # print(id(stu1.school)) # print(id(stu2.school)) # print(id(OldboyStudent.school)) # 类内部定义的函数,类可以使用,但类来用的时候就是一个普通函数,普通函数有几个参就传几个参数 # print(OldboyStudent.learn) # OldboyStudent.learn(123) # 类内部定义的函数,其实是给对象使用的,而且是绑定给对象用,绑定给不同的对象就是不同的绑定方法 # print(stu1.learn) # print(stu2.learn) # 绑定方法的特殊之处在于,谁来调用,就会将谁当作第一个参数自动传入 # stu1.learn() # OldboyStudent.learn(stu1) # stu2.learn() # OldboyStudent.learn(stu2) # stu1.choose('python') # stu2.choose('linux')