day22

今日内容:

3.面向对象

面向对象:

           面向过程:1优点:将复杂的事情简单化,流程化

                           2:缺点:扩展性低,可维护性差

                            3,应用场景:对扩展性要求较低的程序

                                             系统内核,shell脚本,计算器啥的

            面向对象:是一种编程思想

                           关注的点是对象,把你的思维角度从具体操作者变成了一个指挥者

                           案例:把大象装进冰箱

                                  1,打开冰箱

                                  2,塞入大象

                                   3,关闭冰箱

                                   这就是一个典型的面向过程思想

                                   换成面向对象

                                           找一个具备装大象这个技能的对象,然后命令它装大象

                                           (这时候整个程序就会发生巨大变化,需要什么就调取具体对象 ,扩展性更强)

                                           面向对象优点:不需要在关注具体的实现细节 可以更好的关注业务逻辑

                                                                 扩展性提高了,维护性高 ,复用性高

                                                       缺点:对比面向过程而言,程序需要想设计,结构更复杂  ,程序复杂度提高了                                                  

                                                                无法准确预知执行结果

                       面向对象应用场景:

                                 对于扩展性要求较高的应用程序。     qq    微信,等

                      对象:具备某种特征与行为的集合体并且是具体存在的就称之为对象               例子:如来佛祖,马克思

                      类:某些具备相同特征和相同行为的集合体,是一种抽象概念          例子:人, 动物,狗 。

                  在程序中先定义类型,通过类型在查找对象=====即必须先有类,才能产生对象,因为你要提前告诉计算机这个对象是什么样的,让后做什么事

    用法:                      

#关键字:class
# 类名称命名法: 为大驼峰,所有单词首字母全大写。 小驼峰:第一个单词首字母小写
class Student:
#如何描述属性(变量) 属性
shool = "olbBOY"
#描述技能使用的函数 方法
def say_hi(self):
print("三号小学生")
# 创建对象
print("txst...")
pass
# stu1 = Student() #通过字符串来完成任务
# stu1.say_hi()
print(Student.say_hi)
Student.say_hi()
print(Student.shool)
class Person:
country = "china" #属性
def eat(self): #描述技能使用的函数 方法
print("在睡觉。。。")
p1 = Person()
print(p1)
print(Person) #<class '__main__.Person'>
print(p1.country) #china
p1.eat() #在睡觉。。。
#为对象增加了属性
p1.name = "张三"
print(p1.name)
#print(Person.name) #报错,
# 对象里的名称空间是独立的,类有类自己的名称空间,两个彼此独立,但是对象可以访问类的名称空间
#对象优先查找自己的,自己没有在去查找类里的
p1.country = "USA" #给p1对象优先添加了country
#在访问时优先访问自己名称空间的内容,如果找不到 会自动找类里的属性
print(p1.country) # USA
print(Person.country) # china
#每个对象都会存储自己所在累的地址,可以使用.__class__来访问
print(p1.__class__)
print(type(p1))
#查看名称空间中的属性
print(p1.__dict__) #{'name': '张三', 'country': 'USA'}
print(Person.__dict__)

                                                       

                                   

                                          

原文地址:https://www.cnblogs.com/Fzhiyuan/p/10870420.html