标签:title 功能 完成 定义 object 过程 面向对象编程 技能 main
? 面向过程是具体化的,流程化的。解决一个问题,需要一步一步分析需要怎样,然后需要怎样,一步一步实现的。
? 面向过程:一步一步(一个函数一个函数)的完成某件事。(上一个函数的输出为下一个函数的输入)
? 优点:复杂的问题流程化、简单化,条理清晰
? 缺点:扩展性差;中间任何一个地方出错了,流程就不能继续下去了
? 面向对象是模型化的,抽象出一个类,这是一个封闭的环境,在这个环境中有数据有解决问题的方法,你如果需要什么功能直接使用就可以了,至于是怎么实现的,不用知道。
定义:具有相同的属性和技能的对象属于同一类。
定义类的方法:类定义阶段:执行代码
'''
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
定义:一系列特征(属性)和技能(方法)的结合体
定义对象的方法:
# 定义对象(实例化对象)
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()
当给每一个对象特征的时候,我们可以用如下代码实现:
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)
标签:title 功能 完成 定义 object 过程 面向对象编程 技能 main
原文地址:https://www.cnblogs.com/liveact/p/11455765.html