面向对象:
类:
任何事物归为一类, 就是一系列相似特征与技能的结合体;
强调: 站在不同的角度得到的分类是不一样的;
对象和类:
在现实世界中: 先有对象, 后有总结出来的类
在程序中: 先有类, 然后调用类来产生对象;
类就相当于模版, 然后才造对象;
例如:
王二丫:
特征:
-------- 学校:
-------- 名字:
-------- 性别:
-------- 年龄:
技能:
-------- 吃饭:
-------- 学习:
-------- 睡觉:
李三:
特征:
-------- 学校:
-------- 名字:
-------- 性别:
-------- 年龄:
技能:
-------- 吃饭:
-------- 学习:
-------- 睡觉:
相似的特征:
学习, 吃饭, 睡觉
so: 先定义类:
- # 先定义类
- class Student:
- schoole='home'
- #功能 --- 用方法表示
- def learn(self):
- print('learn')
- def sleep(self):
- print('sleep')
- def eat(self):
- print('eat')
- # 产生对象, 最终程序的运行就是对象调用的;
- stu1=Student()# 实例化对象
- stu2=Student()
如何使用类:
类和函数的区别, 类在定义的时候, 就会就会被执行, 但是函数只有在调用的时候, 才会被执行;
在内存里面, 执行类的时候, 会有一个名称空间来存放类的名称空间;
查看类的名称空间:
print(Student.__dict__)
类是一系列对象相似的特证与技能的集合: 特征在程序中用: 变量表示, 技能用函数表示: 类的内部无非就是变量的定义与函数的定义, 但是 python 不限制, 写其他的代码在类里面;
类的用法: 无非就是一些名字, 技能, 针对这些东西, 进行增删改查, 就是通过类的名称空间来进行这些操作: 如下代码:
- class Student:
- schoole='home'
- #功能 --- 用方法表示
- def learn(self):
- print('learn')
- def sleep(self):
- print('sleep')
- def eat(self):
- print('eat')
- print(Student.__dict__['school'])
- print(Student.__dict__['eat'])
如何使用对象:
如上图的代码:
stu1, 就是一个实例化的对象, 这个对象有个两个功能, 学习, 吃饭, 属相是同一个学校;
但是特殊的对象怎么办? 就是有些对象有个性化的设置:
__init__用来为对象定义对象独有的特征;
- class luffStudent:
- school='luffcity'
- def __init__(self,name,age,sex):
- self.Name=name
- self.Age=age
- self.Sex=sex
- def learn(self):
- print('is learning')
- def eat(self):
- print('is sleeping')
- stu1=LuffyStudent()
按照上述代码执行:
结果会报错:
这里用户会很懵逼: 明明我们只是创建了一个类而已, 并没有调用__init__方法, 以上错误说明, 是 python 自己调用, 就是在你实例化的时候, 就会调用这个方法,
针对上述的代码: 我们进行修改为:
stu1=LuffyStudent('wang','nv','45')
在次执行上述代码, 不会报错了;
现在有__init__方法的时候, 在实例化的时候:
1. 先产生一个对象,
2. 触发__init__会返回类的函数属性, 里面有几个参数传几个参数, 其实 self 就是 LuffyStudent() 空对象而已; 然后 self 就是这个空对象, 他会当做第一个参数传给__init__,
3. 然后传:'wang','nv','45'
访问属性:
print(stu1.Name)
同样我们可以对属性进行增删改查:
来源: https://www.cnblogs.com/surewing/p/9607455.html