类和对象
Posted liveact
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类和对象相关的知识,希望对你有一定的参考价值。
一. 面向过程编程
? 面向过程是具体化的,流程化的。解决一个问题,需要一步一步分析需要怎样,然后需要怎样,一步一步实现的。
? 面向过程:一步一步(一个函数一个函数)的完成某件事。(上一个函数的输出为下一个函数的输入)
? 优点:复杂的问题流程化、简单化,条理清晰
? 缺点:扩展性差;中间任何一个地方出错了,流程就不能继续下去了
二. 面向对象编程
? 面向对象是模型化的,抽象出一个类,这是一个封闭的环境,在这个环境中有数据有解决问题的方法,你如果需要什么功能直接使用就可以了,至于是怎么实现的,不用知道。
三. 类和对象
1. 类
定义:具有相同的属性和技能的对象属于同一类。
定义类的方法:类定义阶段:执行代码
''' class 类名(驼峰体): school = 'oldboy' # 定义变量(给类添加属性) def choose_course(self): # 定义在类内部的函数一般称为方法(给类增加技能) pass '''
? 例:
class Student: """注释:学生类""" school = 'oldboy' # 定义变量(给类添加属性) def choose_course(self): # 定义在类内部的函数一般称为方法(给类增加技能) print(self) print('选择课程') stu_dict = Student.__dict__ # 获取类的所有属性和方法 print(stu_dict) print(stu_dict['school']) # 获取学校 stu_dict['choose_course'](123) print(Student.__doc__)
? 运行结果:
'__module__': '__main__', '__doc__': '注释:学生类', 'school': 'oldboy', 'choose_course': <function Student.choose_course at 0x000001CB0F3BBBF8>, '__dict__': <attribute '__dict__' of 'Student' objects>, '__weakref__': <attribute '__weakref__' of 'Student' objects> oldboy 123 选择课程 注释:学生类 Process finished with exit code 0
2. 对象
定义:一系列特征(属性)和技能(方法)的结合体
定义对象的方法:
# 定义对象(实例化对象) stu1 = Student() # stu1就是一个对象 print('stu1:', stu1) print(stu1.school) print(id(stu1.school)) stu1.choose_course() # 对象使用类中的方法时,不需要加参数,因为实例化对象调用该方法时,python会自动将该实例化对象传给self stu2 = Student() print('stu2:', stu2) print(stu2.school) print(id(stu2.school)) stu2.choose_course()
3. 定制对象独有的特征
当给每一个对象特征的时候,我们可以用如下代码实现:
stu1 = Student() stu1.name = 'jerry' stu1.height = 160 stu1.weight = 170 print(stu1.name) print(stu1.height) print(stu1.weight) stu2 = Student() stu2.name = 'tom' stu2.height = 100 stu2.weight = 300 print(stu2.name) print(stu2.weight) print(stu2.height)
可以想象,当对象很多的时候,这种方法会特别繁琐,我们可以用函数简化这个步骤:
def init(obj, name, height, weight): obj.name = name obj.weight = weight obj.height = height stu1 = Student() init(stu1, 'jerry', '170', '140') # init是你用来给对象添加独有特征的函数 print(stu1.name) print(stu1.weight) print(stu1.height) stu2 = Student() init(stu2, 'alex', 100, 300) print(stu2.name) print(stu2.weight) print(stu2.height)
同样的,即使使用函数简化了步骤,但是这种方式也还是比较繁琐,我们还可以使用python内部自己定义好的工具:
只要在定义类的时候,定义
__init__()
函数,将需要填入的参数提前设定好就行了:class Student(): school = 'oldboy' def __init__(self, name, height, weight): print(self) self.name = name # self = stu1 --> stu1.name = 'jerry' self.height = height self.weight = weight def choose_course(self): print('正在选课') stu1 = Student('jerry', 170, 140) print('stu1:',stu1) print('stu1.name:',stu1.name) stu2 = Student('alex', 100, 300) print('stu2.name:',stu2.name) print('stu2:',stu2)
以上是关于类和对象的主要内容,如果未能解决你的问题,请参考以下文章