类即类别、种类,是面向对象设计最重要的概念,从一小节咱们得知对象是特征与技能的结合体,而类则是一系列对象类似的特征与技能的结合体。python
那么问题来了,先有的一个个具体存在的对象(好比一个具体存在的人),仍是先有的人类这个概念,这个问题须要分两种状况去看。编程
世界上确定是先出现各类各样的实际存在的物体,而后随着人类文明的发展,人类站在不一样的角度总结出了不一样的种类,好比 人类、动物类、植物类等概念。也就说,对象是具体的存在,而类仅仅只是一个概念,并不真实存在,好比你没法告诉我人类 具体指的是哪个人。
这与函数的使用是相似的:先定义函数,后调用函数,类也是同样的:在程序中须要先定义类,后调用类。不同的是:调用 函数会执行函数体代码返回的是函数体执行的结果,而调用类会产生对象,返回的是对象。
按照上述步骤,咱们来定义一个类(咱们站在老男孩学校的角度去看,在座的各位都是学生)函数
对象1:李坦克 特征: 学校=oldboy 姓名=李坦克 性别=男 年龄=18 技能: 学习 吃饭 睡觉 对象2:王大炮 特征: 学校=oldboy 姓名=王大炮 性别=女 年龄=38 技能: 学习 吃饭 睡觉 对象3:牛榴弹 特征: 学校=oldboy 姓名=牛榴弹 性别=男 年龄=78 技能: 学习 吃饭 睡觉 现实中的老男孩学生类 类似的特征: 学校=oldboy 类似的技能: 学习 吃饭 睡觉
注意:学习
OldboyStudent.__dict__
查看.OldboyStudent.school #查 OldboyStudent.school='Oldboy' #改 OldboyStudent.x=1 #增 del OldboyStudent.x #删
s1=OldboyStudent() s2=OldboyStudent() s3=OldboyStudent() #如此,s一、s二、s3都同样了,而这三者除了类似的属性以外还各类不一样的属性,这就用到了__init__
__init__
方法#注意:该方法是在对象产生以后才会执行,只用来为对象进行初始化操做,能够有任意代码,但必定不能有返回值 class OldboyStudent: ...... def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex ...... s1=OldboyStudent('李坦克','男',18) #先调用类产生空对象s1,而后调用OldboyStudent.__init__(s1,'李坦克','男',18) s2=OldboyStudent('王大炮','女',38) s3=OldboyStudent('牛榴弹','男',78)
#执行__init__,s1.name='牛榴弹',很明显也会产生对象的名称空间能够用s2.__dict__查看,查看结果为 {'name': '王大炮', 'age': '女', 'sex': 38} s2.name #查,等同于s2.__dict__['name'] s2.name='王三炮' #改,等同于s2.__dict__['name']='王三炮' s2.course='python' #增,等同于s2.__dict__['course']='python' del s2.course #删,等同于s2.__dict__.pop('course')