面向对象 - 类 - 总结

面向对象 - 类:
编程:语法 + 数据结构 + 算法
编程范式:面向过程 面向对象
1.面向过程:解决问题的步骤
优点:复杂的问题流程化,进而简单化 应用在:程序不在需要扩展了
缺点:可扩展性差,牵一发而动全身
2.面向对象:特征与技能的结合体 一切皆对象 应用在:用户需求经常变化,互联网应用,游戏,企业内部应用
优点:可扩展性高
缺点:编程复杂度高
3.类:一系列对象相似的特征与技能的结合体 站在不同的角度 得到的分类是不一样的
现实中:先有对象后又类
程序中:先有类后有对象
特点:1.定义的时候就运行了!
2.站的角度不同,定义出的类截然不同
3.现实中的类并不完全等于程序中的类,比如现实中的公司类,在程序中有时需要拆分成部门类,业务类等
4.有时为了编程需求,程序中也可能会定义现实中不存在的类,比如策略类,现实中并不存在,但是在程序中却是一个很常见的类
5.python 一切皆对象,在python3里统一了类与类型(list dict)的概念 就是说: 类型也是类
li = list([1,2,3,4]) == [1,2,3,4] li.append(5) list.append(li,6)
dic=dict({'name':'alice'}) == {'name':'alice'} dic['age']=12 dict.setdefault(dic,'sex','female')
用途:1.操作属性(数据属性、函数属性) 增删改查
名称空间:LuffyStudent.__dict__
增:LuffyStudent.name='alice'
删:del LuffyStudent.school
改:LuffyStudent.school='Luffy'
查:LuffyStudent.school
2.实例化:产生对象
stu=LuffyStudent()
4.对象: 类的实例化
4.1.__init__ 定制对象自己独有的特征, 实例化对象时,会自动触发
实例化的步骤: 1.产生一个空对象 2.触发函数LuffyStudent.__init__(stu,name,age)
增: stu3.sex='female'
删: del stu3.age del stu3.__dict__['name'] 注:不能删类中的属性 del stu3.school
改: stu3.name='alex'
查: stu3.name stu3.school
4.2.属性查找
类的数据属性--->是所有对象共有的--->stu1.school is stu2.school == True
类的函数属性--->是绑定给对象使用的-->(bound method) stu1.learn is stu2.learn == False
stu1.learn() == LuffyStudent.learn(stu1) 把对象本身当作第一个参数传给self
stu1.learn(5) == LuffyStudent.learn(stu1,5) 可传其他参数
属性查找--->顺序: 1.对象先在自己内部找-->2.类中找-->3.父类找-->4.不会去全局找

  1 # x='global'
  2 class LuffyStudent:
  3     school = 'luffycity'
  4 
  5     def __init__(self,name,age,sex):
  6         # print(self.__dict__)
  7         self.name=name
  8         self.age=age
  9         self.sex=sex
 10         # print(self.__dict__)
 11         # print(self.name,self.age)
 12 
 13     def learn(self,data):
 14         print('%s is learning'%self.name,data)
 15         print(self.name,self.age)
 16 
 17     def eat(self):
 18         print('is eatting')
 19 
 20     # print('定义的时候就运行了!')
 21 
 22 # stu1 = LuffyStudent       # 类
 23 # stu2 = LuffyStudent()     # 对象
 24 # print(stu1)               # <class '__main__.LuffyStudent'>
 25 # print(stu2)               #<__main__.LuffyStudent object at 0x00000225DEDD3F98>
 26 # print(stu2.school)        # luffycity
 27 # stu2.learn()              # is learning
 28 
 29 # print(LuffyStudent.__dict__)
 30 # print(LuffyStudent.school)
 31 # LuffyStudent.name='alice'
 32 # print(LuffyStudent.__dict__['school'])
 33 # # print(LuffyStudent.__dict__)
 34 # print(LuffyStudent.name)
 35 # del LuffyStudent.school
 36 # print(LuffyStudent.__dict__)
 37 # LuffyStudent.school='Luffy'
 38 # print(LuffyStudent.school)
 39 # print(LuffyStudent.learn)
 40 
 41 # stu4=LuffyStudent()
 42 # print(stu4.__dict__)
 43 # print(stu4.school)
 44 
 45 # stu3=LuffyStudent('alice',12)
 46 # print(stu3.school,stu3.name,stu3.age)
 47 # stu3.learn()
 48 # print(stu3.__dict__)
 49 # print((stu3.name,stu3.school,stu3.learn))
 50 # stu3.sex='female'
 51 # print(stu3.__dict__)
 52 # print(stu3.sex)
 53 # del stu3.__dict__['name']
 54 # del stu3.school
 55 # print(stu3.__dict__)
 56 # stu3.name='aaaa'
 57 # print(stu3.__dict__)
 58 # print(stu3.name,stu3.age,stu3.sex,stu3.school)
 59 # stu3.school='Luffy'
 60 # print(stu3.__dict__)
 61 # print(stu3.school)
 62 
 63 # stu1=LuffyStudent('alice',12)
 64 # stu2=LuffyStudent('alex',18)
 65 # print(stu1.__dict__)
 66 # # stu1.school='luffy'
 67 # print(stu1.school,stu1.name)
 68 # print(id(stu1.school),id(stu2.school))
 69 # print(stu1.school is stu2.school)
 70 # print(stu1.learn,stu2.learn)
 71 # print(stu1.learn is stu2.learn)
 72 # stu1.learn()
 73 
 74 # stu1.learn(3)
 75 # LuffyStudent.learn(stu1,5)
 76 
 77 # stu1.scho='luffy'
 78 # print(stu1.scho)
 79 # LuffyStudent.x='xxx'
 80 # print(LuffyStudent.__dict__)
 81 # stu1.x='sss'
 82 # print(stu1.x)
 83 
 84 # li = list([1,2,3,4])
 85 # li.append(5)
 86 # print(li)
 87 # dic=dict({'name':'alice'})
 88 # dic['age']=12
 89 # print(dic)
 90 # dict.setdefault(dic,'sex','female')
 91 #
 92 # print(dic)
 93 # print(type(list))
 94 #
 95 # li=list([1,2,3,4])
 96 # print(li)
 97 # li.append(5)
 98 # list.append(li,6)
 99 # print(li)
100 
101 stu1=LuffyStudent('alice',12,'female')
102 print(stu1.sex)


posted @ 2018-03-11 11:23  Alice的小屋  阅读(202)  评论(0编辑  收藏  举报