面向对象初识

在面向对象之前,接触到面向过程式编程和函数式编程,它们很容易造成代码冗余,面向对象式编程能使代码的结构更加清晰化,可读性更高

 

面向过程编程 vs 函数式编程 vs 面向对象式编程
区别:
  面向过程式编程:重复代码过多,可读性比较差
  函数式编程: 函数名要有可识别性
  面向对象的优势:1,类是一组相似功能的集合体,使组织结构更加清晰和规范化
          2,要有上帝的思维,用面向对象设计程序,类是一个公共模板,对象去操作和使用这个模板

函数式编程:(每个函数之间都没有联系)
def login():   pass def register():   pass def check_user():   pass def check_account():   pass def save():   pass def check_flow_account():   pass 面向对象式编程: 组织结构更加清晰 class Auth:   def login():     pass   def register():     pass   def check_user():     pass class Account:   def check_account():     pass   def save():     pass   def check_flow_account():     pass

什么是类?

  类是具有相似功能和属性的一类事物,功能为动,属性为静
什么是对象?

  对象是类的具体体现,具体到一个
类的结构:

class Human(类名首字母大写):
    # 第一部分:静态属性,属性,变量,静态字段
    mind = '有思想'
    language = '使用语言'
    shape_list = ['四肢','五官']
    # 第二部分:动态属性,方法,函数
    def work(self):
        print('都会工作')
    def eat(self):
        print('都需要吃饭')

如何使用?

 类:

 对属性的操作:
 1.查看类中的所有内容: print(类名.__dict__),通过__dict__只是能查询,不能进行增删改
 2.万能的点 . (类名+ . 的方式)  
  增: 类名.属性名 = '属性值'
  删: del 类名.属性名
  改: 类名.已有属性名 = '新的属性值'
  查: print(类名.属性名)
 3.类中的动态方法,(除静态方法,类方法)一般不用类名去执行类中的方法
  通过对象去使用,类名+(),实例化过程,实例化一个对象
 实例化对象的过程:
    1.在内存中开辟一个新的空间
    2.默认执行__init__方法,并把对象空间传给self
    3.在__init__方法中,给对象空间封装一些属性
 对象: 

 1.对象查看对象空间中的所有属性:print(对象 + __dict__)
 2.对象操作对象空间的属性: 万能的点 .
  增: 对象名 + 属性名 = 属性值(类的外面)
  删: del 对象名.属性名
  改: 对象名.已有属性名 = 属性值

 3.对象查看类中的静态属性:print(对象 + 属性名),只能查看,不能更改
   实例化对象可以使用公共模板的属性,但不能进行修改
 4.对象调用类中的方法: 对象名.类中的方法
   对象执行类中的方法,会把对象空间自动传给方法中的self参数

 给对象封装属性

  1.在__init__中,__init__(self,name,age):
  2.在类的外面: 对象名.属性名
  3.在类的其他方法中:

class A:
  def __init__(self,name,age):
    self.name = name
    self.age = age
  def func(self,sex):         可以写为固定的,也可以传递一个参数
    self.sex = sex 
obj = A('小胖',18)
obj.func('')           obj对象空间传给self

给类添加属性

  类的外部: 类名.属性名 = 属性值
  类的方法内: 类名.属性名 = 属性值
  通过对象: 对象名.方法名执行方法
类名调用方法与对象调用方法达到一样的效果:
  类名.方法名(对象)

对象查找属性的顺序: 对象空间 --> 类空间 --> 父类空间 --> ......
类名查找属性的顺序: 本类空间 --> 父类空间 --> ......

 

posted @ 2019-02-12 16:33  DF-包子  阅读(102)  评论(0编辑  收藏  举报