类与对象的概念
类即类别、种类,是面向对象设计的最重要的概念
种类:是特征与技能的结合体
类:是一系列对象相似的特征与技能的结合体
-
在现实世界中:是先有对象,再有类
世界上肯定是先出现各种各样的实际存在的物体,然后随着人类文明的发展,人类站在不同的角度总结出了不同的种类,比如
人类、动物类、植物类等概念。也就说,对象是具体的存在,而类仅仅只是一个概念,并不真实存在,比如你无法告诉我人类
具体指的是哪一个人。
-
在程序中:先定义类,后产生对象
这与汗水的使用时类似的:先定义函数,后调用函数,类也是一样的:在程序中需要先定义类,后调用类。
不一样的是:调用函数会执行函数体代码返回的函数执行的结果,而调用类会产生对象,返回的是对象
定义类
按照上述步骤,来定义一个类
-
在现实世界中,先有对象,再有类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
|
-
在程序中,务必保证:先定义(类),后使用类(用来产生对象)
1 2 3 4 5 6 7 8 9 10 |
|
注意:
- 类中可以有任意python代码,这些代码在类定义阶段便会执行,因而会产生新的名称空间,用来存放类的变量名与函数名,可以通过oldboystudent__dict__查看
- 类中定义的名字,都是类的属性,点事访问属性的语法
- 对于经典类来说我们可以通过该字典操作类名称空间的名字,但新式类有限制
类的使用
- 引用类的属性
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
- 调用类,或称为实例化,得到程序中的对象
1 2 3 |
|
#如此,s1、s2、s3都一样了,而这三者除了相似的属性之外还各种不同的属性,这就用到了__init__
- __init__ 方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
对象使用
# 执行__init__,s1.name = '李坦克',很明显也会产生对象的名称空间可以用s1.__dict__查看,查看结果为:
1 2 3 4 5 6 |
|
补充说明
- 站的角度不同,定义出的类是截然不同的;
- 现实中的类并不完全等于程序中的类,比如现实中的公司类,在程序中有时需要拆分成部门类,业务类等
- 有时为了编程需求, 程序中也可能会定义现实中不存在的类,比如策略类,现实中并不存在,但是在程序中却是一个很常见的类
#加上__init__方法后,实例化的步骤 # 1、先产生一个空对象stu1 # 2、LuffyStudent.__init__(stu1,'王二丫','女',18)