面向过程与面向对象的区别 面向过程编程思想:是一种机械化的思维,就像一条流水线,指定流水线只能生产指定产品 缺点:牵一发而动全身 扩展性非常低,可维护性差 优点:将复杂的事情,简单化,并流程化 应用场景:对扩展要求较低的程序 eg:系统内核,shell脚本,计算器啥的 面向对象是一种编程思 对象是什么 面向对象关注点是对象,把你的思维角度从具体操作这 变成了一个指挥者 例如把大象装进冰箱 1.打开冰箱 2.塞入大象 3.关闭冰箱 以上就是典型面向过程思想 换成面向对象 找一个具备装大象这个技能的对象 然后命令它装大象 注意:对象不是凭空产生的 需要我们自己先设计对象 然后在使用它们 优点: 不需要在关注具体的实现细节 可以更好的关注业务逻辑 扩展性提高了,维护性高,复用性高 缺点: 对比面向过程而言.程序需要先设计,结构更复杂,编程复杂度提高了 无法准确预知执行结果 应用场景: 对于扩展性要求较高的应用程序 qq,微信,王者荣耀 面向对象是一种编程思想,让你不需要关心具体实现细节,而是关注对象 什么是对象? 万事万物都是对象 对象:具备某种特征与行为的集合体并且是具体存在的就称之为对象 如来佛祖,owen 类: 某些具备相同特征和相同行为的集合体 ,是一种抽象概念 类型==类 人,动物,狗,老男孩的老师 特征==属性 行为==技能 对象和类的关系 在生活中 先有对象 再有类 在代码中 必须现有类 才能产生对象 (因为你需要提前告诉计算机这个对象是什么样的有什么技能) 编程思想不是某一个具体语言或技术 , 面向对象的语言: python,Java,C++,C# 面向过程: C,ruby
使用class关键字来定义一个类 类名称为大驼峰命名法 所有单词首字母大写 小驼峰 第一个单词首字母小写 """ # class ClassName: # pass class Student: # 描述特征使用变量 (属性) school = "olbBoy" # 描述技能使用函数 (方法) def say_hi(): print("hello i am tiger") # class中的代码仅在第一次加载时执行 print("test...") pass # print(Student.say_hi) Student.say_hi() print(Student.school) # Student.say_hi() # 调用类来获得一个对象 # stu1 = Student() # stu1.say_hi()
class Person:
country = "china"
def eat(self):
print("正在吃面...")
p1 = Person()
# print(p1)
# print(Person)
# print(p1.country)
# p1.eat()
# 为对象增加了属性
p1.name = "张三"
print(p1.name)
# 给p1对象单独添加了country
p1.country = "USA"
# 在访问时优先访问自己名称空间的内容 如果找不到 会自动找类中的属性
print(p1.country)
print(Person.country)
# 每个对象都会存储自己所在类的地址 可以使用__class__来访问
print(p1.__class__)
print(type(p1))
# 查看名称空间中的内容
print(p1.__dict__)
print(Person.__dict__)