标签:查看属性 过程 计算 计算机 col eth ict 交互 技能
? 面向对象是一种编程思想,是前辈们总结出的经验,指导程序员如何编写出更好的程序 ,
核心是对象,程序就是一系列对象的集合, 程序员负责调度控制这些对象来交互着完成任务。
案例1:把大象装进冰箱 ?
? 面向过程:
? 1.打开冰箱
? 2.装入大象
? 3.关闭冰箱
? 面向对象:
? 找个具备装大象的技能的对象
案例2::西天取经
? 如来有一堆破书要传出去,他没有自己干,而是找了五个对象帮他去干
? 如来只要负责控制调度的对象即可
案例3::曹操吟诗,命手下将所作之诗刻于木板之上
? 第一天:喝酒吃肉,人生真爽
? 第二天:喝酒吃肉,人生几何
? 第三天:对酒当歌,人生几何
? 1.扩展性
? 2.灵活性
? 3.重用性
? 1.程序的复杂度提高了
? 2.无法准确预知结果
对扩展性要求较高的程序 ,通常是直接面向 用户的,例如:qq,微信
? 过程就是一步一步的执行步骤,既先干啥在干啥
优点:逻辑清晰 , 复杂问题简单化,流程化
缺点: 扩展性差,可维护性差
对扩展性要求较低的程序例如:系统内核,git,计算器
既类型,类别 ,是一种抽象概念
是一系列具备相同特征和相同行为的对象的集合
就是具体存在的某个事物,具备自己的特征和行为
对象就是特征和技能的结合体
类包含一系列对象
对象属于某个类
在生活中是先有对象再有类
而在程序中是先有类才能有对象,我们必须先告诉计算机这类的对象有什么特征有什么行为
定义类的语法
class 类的名称:
# 类中的内容 描述属性和技能
#描述属性用变量
#描述行为用函数
#类名称 书写规范 首先是见名知意 名称是大驼峰命名法
#驼峰就是单词首字母大写 , 大驼峰是第一个字母大写,小驼峰是第一个字母小写
创建对象的语法:
class Person:
pass
#创建对象
p = Person()
属性的写法:
# 属性可以写在类中
# 类中的属性,是所有对象公共的
# 也可以写在对象中
# 对象中的属性,是每个对象独特的(不一样的)
# 如果类中和对象中存在同样的属性,先访问对象 如果没有在访问类
# 练习: 描述一个老师类 需要包含 一个公共属性和 一个独特的属性
class Teacher:
school = "oldboy"
t1 = Teacher()
t1.name = "jack"
t1.age = 28
属性的增删改查
# 增加属性
# 对象变量名称.属性名称 = 属性值
# 删除属性
del 对象的变量名称.属性名称
# 修改
对象.属性 = 新的值
# 查看属性 访问的是对象的所有属性
print(对象.__dict__)
# 访问对象的类信息
print(对象.__class__)
叫做初始化方法,本质上就是一个函数
特点1: 当实例化对象时,会自动执行init方法
特点2:会自动将对象作为第一个参数传入,参数名称位self ,self可以是别的名字,但不建议改
功能:用户给对象赋初始值
练习:创建一个类具备几个属性,通过初始化方法来给他设置属性
class Dog:
def __init__(self,kind,color,age):
self.kind = kind
self.color = color
self.age = age
d1 = Dog("二哈","黑白",1)
d1 = Dog("泰迪","棕色",2)
注意:该函数不能有任何返回值/.... 只能是None 规定如此..
默认情况下类中的方法都是对象绑定方法
其特殊之处在于,
当使用对象调用该函数时会自动传入对象本身,作为第一个参数
当使用类名来调用时他就是一个普通函数,有几个参数就得传几个参数
练习:写一个学生类,具备一个打招呼的技能 要能输出自己的名字信息
class Student:
def __init__(self,name):
self.name = name
def say_hi(self):
print("hello my name is %s" % self.name)
类绑定方法用@classmethod来装饰
特殊之处:不管用类还是对象调用,都会自动传入类本身,作为第一个参数
或叫做静态方法,就是即不需访问类的数据,.也不需要访问对象的数据
语法:@staticmethod
不常用
标签:查看属性 过程 计算 计算机 col eth ict 交互 技能
原文地址:https://www.cnblogs.com/DcentMan/p/11247336.html