类和对象

Posted liveact

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类和对象相关的知识,希望对你有一定的参考价值。

一. 面向过程编程

? 面向过程是具体化的,流程化的。解决一个问题,需要一步一步分析需要怎样,然后需要怎样,一步一步实现的。

? 面向过程:一步一步(一个函数一个函数)的完成某件事。(上一个函数的输出为下一个函数的输入)

? 优点:复杂的问题流程化、简单化,条理清晰

? 缺点:扩展性差;中间任何一个地方出错了,流程就不能继续下去了

二. 面向对象编程

? 面向对象是模型化的,抽象出一个类,这是一个封闭的环境,在这个环境中有数据有解决问题的方法,你如果需要什么功能直接使用就可以了,至于是怎么实现的,不用知道。

三. 类和对象

1. 类

  1. 定义:具有相同的属性和技能的对象属于同一类。

  2. 定义类的方法:类定义阶段:执行代码

    '''
    class 类名(驼峰体):
        school = 'oldboy'  # 定义变量(给类添加属性)
    
        def choose_course(self):  # 定义在类内部的函数一般称为方法(给类增加技能)
            pass
    '''

    ? 例:

    class Student:
        """注释:学生类"""
        school = 'oldboy'  # 定义变量(给类添加属性)
    
        def choose_course(self):  # 定义在类内部的函数一般称为方法(给类增加技能)
         print(self)
            print('选择课程')
    
    
    stu_dict = Student.__dict__  # 获取类的所有属性和方法
    print(stu_dict)
    print(stu_dict['school'])  # 获取学校
    stu_dict['choose_course'](123)
    print(Student.__doc__)

    ? 运行结果:

    '__module__': '__main__', '__doc__': '注释:学生类', 'school': 'oldboy', 'choose_course': <function Student.choose_course at 0x000001CB0F3BBBF8>, '__dict__': <attribute '__dict__' of 'Student' objects>, '__weakref__': <attribute '__weakref__' of 'Student' objects>
    oldboy
    123
    选择课程
    注释:学生类
    
    Process finished with exit code 0

2. 对象

  1. 定义:一系列特征(属性)和技能(方法)的结合体

  2. 定义对象的方法:

    # 定义对象(实例化对象)
    stu1 = Student()  # stu1就是一个对象
    
    print('stu1:', stu1)
    print(stu1.school)
    print(id(stu1.school))
    stu1.choose_course()  # 对象使用类中的方法时,不需要加参数,因为实例化对象调用该方法时,python会自动将该实例化对象传给self
    
    stu2 = Student()
    print('stu2:', stu2)
    print(stu2.school)
    print(id(stu2.school))
    stu2.choose_course()

3. 定制对象独有的特征

  1. 当给每一个对象特征的时候,我们可以用如下代码实现:

    stu1 = Student()
    stu1.name = 'jerry'
    stu1.height = 160
    stu1.weight = 170
    print(stu1.name)
    print(stu1.height)
    print(stu1.weight)
    
    stu2 = Student()
    stu2.name = 'tom'
    stu2.height = 100
    stu2.weight = 300
    print(stu2.name)
    print(stu2.weight)
    print(stu2.height)
  2. 可以想象,当对象很多的时候,这种方法会特别繁琐,我们可以用函数简化这个步骤:

    def init(obj, name, height, weight):
        obj.name = name
        obj.weight = weight
        obj.height = height
    
    stu1 = Student()
    init(stu1, 'jerry', '170', '140')  # init是你用来给对象添加独有特征的函数
    print(stu1.name)
    print(stu1.weight)
    print(stu1.height)
    
    stu2 = Student()
    init(stu2, 'alex', 100, 300)
    print(stu2.name)
    print(stu2.weight)
    print(stu2.height)
  3. 同样的,即使使用函数简化了步骤,但是这种方式也还是比较繁琐,我们还可以使用python内部自己定义好的工具:

    只要在定义类的时候,定义 __init__() 函数,将需要填入的参数提前设定好就行了:

    class Student():
        school = 'oldboy'
    
        def __init__(self, name, height, weight):
            print(self)
            self.name = name  # self = stu1 --> stu1.name = 'jerry'
            self.height = height
            self.weight = weight
    
        def choose_course(self):
            print('正在选课')
    
    stu1 = Student('jerry', 170, 140)
    print('stu1:',stu1)
    print('stu1.name:',stu1.name)
    
    stu2 = Student('alex', 100, 300)
    print('stu2.name:',stu2.name)
    print('stu2:',stu2)

以上是关于类和对象的主要内容,如果未能解决你的问题,请参考以下文章

11Java类和对象

面向对象——1-类和对象

类和对象

类和对象

oc知识点 类和对象

类和对象

OC1(类和对象)

类和对象

类和对象的解析

类和对象