Python-------面向对象之初识

面向对象之初识

  1. 面向过程编程vs函数式编程vs面向对象编程

    s1 = 'fdskljfsda'
    count = 1
    for i in s1:
    	count += 1
    	
    l1 = [1,2,3,4,5]
    count = 1
    for i in l1:
    	count += 1
    	
    
    def my_len(a):
    	count = 1
    		for i in a:
        count += 1
    提高代码的可读性,减少了代码的重复性....
    上面统称为面向过程式编程.
    
    
    面向过程式编程:
    好处: 出色的完成你之前布置的所有的需求.
    坏处: 但凡更改或者增加一条需求,可能整个项目都随之改变.
    
    
    
  2. 面向对象的结构

    1. 类是相似功能的集合体.
    2. 类 你要站在上帝的角度去考虑问题.
    类: 具有相似功能和特性的一类事物.
    对象:类的具体体现.
    一定要有宏观的概念,区分类与对象.
    类的第二个优点: 你要站在上帝的角度去考虑,类一个公共模板,对象是从这个公共的模板产出的.
    结构上分析:
    class Student:
        daily = '学习'
        examination = '考试'
        def work(self):
            print('每天要上课')
        def homework(self):
            print('家庭作业')
    Human 类名要具有描述性,类名首字母大写,类名不宜用_
    
  3. 从类名的角度使用类

    类名调用类中的属性

    类名调用类中的方法

     class Student:
         """
        此类是构建学生类
        """
         daily = '学习'
         examination = '考试'
    
         def work(self):
             print('每天要上课')
         def homework(self):
             print('家庭作业')
     类名的角度调用类中的属性.
    
     1. 查看类中的所有的内容.  类名.__dict__只用于获取类中的全部.
     print(Student.__dict__)
     print(Student.__dict__['daily'])
     
     2. 万能的 .点.
     print(Student.daily)  # 查
     Student.cloth = '校服'  # 增
     print(Student.__dict__)
     Student.examination = '不考试!'  # 改
     print(Student.examination)
     del Student.daily  # 删
     print(Student.__dict__)
    
     一般类中的属性都是通过类名.的方式去操控的.
    
     类名的角度调用类中的方法.(一般类中的方法(除去类方法,静态方法外)不通过类名调用)
     Student.work(5565)  # 工作中不用类名调用
    
    
  4. 实例化一个对象

    实例化对象发生了三件事

    对象调用对象的属性

    对象调用类中的属性

    对象调用类中的方法

    class Student:
        """
        此类是构建学生类
        """
        daily = '学习'
        examination = '考试'
        def __init__(self,n,a,h):
    
            # self.n = '小黑'
            # self.sex = '随便'
            self.name = n
            self.age = a
            self.hobby = h
    
        def work(self,c):
            # self.color = '绿色'
            self.color = c
            print(f'{self.name}每天要上课')
    
        def homework(self):
            # 利用self 对象空间,为所欲为
            print('家庭作业')
    
    # obj = Student()  # 类名() 过程就叫做实例化过程,实例化一个对象
    # print(obj)  # 对象,实例
    # obj1 = Student()
    # print(obj1)
    
    # obj = Student()
    # print(obj)
    
    # 实例化一个对象时发生了三件事:
    # 1. 在内存中创建一个对象空间.
    # 2. 自动执行__init__方法,并且将对象空间传给self参数.
    # 3. 执行__init__方法里面的代码,给对象空间封装其属性.
    
    # 从对象角度研究类:
    # 对象操作对象里面的属性.
    # obj = Student()
    # print(obj)
    # 对象查看全部属性
    # print(obj.__dict__)
    
    # 对象可以操作对象空间的属性  万能的点
    # obj = Student()
    # # obj.age = '29'  # 增
    # # del obj.n  # 删
    # # obj.sex = '女'# 改
    # print(obj.n)  # 查
    # print(obj.__dict__)
    
    # liye = Student('小黑',21,'洗头')
    # mc_sq = Student('骚强',18,'高端会所')
    # print(liye.__dict__)
    # print(mc_sq.__dict__)
    
    # 对象查看类中的属性.
    # mc_sq = Student('骚强',18,'高端会所')
    # # print(mc_sq.daily)
    # mc_sq.daily = '骚麦'
    # print(mc_sq.daily)
    # print(mc_sq.__dict__)
    
    
    # 对象调用类中的方法
    liye = Student('小黑',21,'洗头')
    # print(liye.__dict__)
    # liye.work()
    liye.work('绿油油')
    print(liye.__dict__)
    
  5. 什么是self?

     self 就是类中方法的第一个位置参数,
     如果通过对象执行此方法,解释器就自动的将此对象空间当做实参传给self.
     约定俗称: 类中的方法第一个参数一般都设置成self.
    
  6. 一个类可以实例化多个对象

posted @ 2019-07-05 16:45  口吐芬芳  阅读(138)  评论(0编辑  收藏  举报