• 面向对象基础


    一 、面向对象编程思想(oop)

    什么是面向对象编程

    面向对象编程 ------ Object Oriented Programming ,简称OOP,是一种程序设计思想

    它将对象作为程序的基本单元

    将数据和处理数据的程序封装到对象中

    以提高软件的重要性,灵活性和扩展性为首要目的

    面向对象编程的优缺点:

    优点 

    1.大大提高了扩展性,当一个对象发了修改时,对其他对象没有任何影响,对象之间相互独立,耦合度变得更低

    2.大大提高了程序的灵活性

    3.重用性

    缺点:

    1.程序的复杂度提高了

    2.无法准确预知结果

    应用场景

    对扩展性要求较高的程序,通常是直接面向用户的,比如:QQ,微信

    面向过程编程思想

    关注的核心是过程,过程是一步一步的执行步骤,就是首先做什么再做什么

    优点:逻辑清晰,复杂问题简单化,流程化

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

    使用场景:

    对扩展性要求较低的程序,比如:系统内核,计算器,git

    二、类与对象

    对象是什么

    对象是特征和技能的结合体,具备自己的特征和行为

    对象的另一种理解方式:

    变量的作用是存储数据,函数的作用是处理数据

    对象是将数据与处理数据的函数绑定在一起

    类是什么

    类就是类型,类别,种类,是一系列对象中相似特征与技能的结合体

    在生活中是一种抽象的概念,例如:人类,动物是不具体的

    三、创建类和对象

    定义类

    以学生类Student为例子,在Python中,定义类通过class关键字

    class Student:
        pass

    class后面紧跟的就是类名,即Student,遵循python编码规范,类名通常是大写开头的单词,多个单词是使用驼峰命名法

    创建对象也称之为实例化,定义好student类后,就可以根据Student类创建Student的实例,创建实例通过类名加上()实现:

    stu1 = Student()
    print (stu1)
    #<__main__.Student object at 0x000001E2E15485F8>
    变量名stu1指向一个Student类的实例,
    0x000001E2E15485F8是实例的内存地址,
    每个实例的地址都是不相同的
    print(Student)
    #<class '__main__.Student'>
    Student本身则是一个类(class)

    属性的写法:

    属性可以写在类中,类中的属性,是所有对象公共的

    也可以写在对象中,对象中的属性,是每个对象独特的(不一样)

    如果类中和对象中存在同样的属性,先访问对象,如果没有在访问类

    属性的增删查改

    1.增加属性

    对象变量名称.属性名称 = 属性值

    2.删除属性

    del 对象的变量名称.属性名称

    3.修改属性

    对象.属性 = 新的值

    4.查看属性 

    print(对象.__dict__)   访问的是对象的所有属性

    print(对象.__class__)  访问对象的类信息

    四、初始化方法init

    class Student:
        def __init__(self,name):
            self.name = name

    t1 = Student('jack')
    print(t1.name) # <__main__.Student object at 0x000002447EDD8B70>
    print(t1) #jack

    小结:

    init函数用于为对象属性设置初始值

    在创建对象时会自动调用

    自动传入对象本事

    五、为对象定制行为

    class Student:
        def __init__(self,name,age):
            self.name = name
            self.age = age
    
        def say_hi(self):
            print("hello ! my name is %s"%self.name)
    
    stu1 = Student('yzy',18)
    stu1.say_hi()  

    六、绑定类方法

    默认情况下类中的方法都是对象绑定方法

    其特殊支出在于:
    当使用对象调用该函数是会自动传入对象本身,作为第一个参数

    当使用类名来调用时,它就是一个普通函数,有几个参数就得传几个参数

    类的绑定方法

    类的绑定方法用@classmethod来装饰

    特殊之处:不管用类还是对象调用,都会自动传入类本身,作为第一个参数

    什么时候绑定给对象:当函数逻辑需要访问对象中的数据时

    什么时候绑定给类:当函数逻辑需要访问类中的数据时

    非绑定方法

    @staticmethod

    也称为静态方法,就是即不需访问类的数据,也不需要访问对象中的数据

    不常用

    class Student:
        school = "oldboy"
       
        def __init__(self,name):
            self.name = name
    
        @classmethod
        def show_school(cls):
            print(cls)
    
        @staticmethod
        def print_hello():
            print("hello world")
    
    
    stu = Student("jack")

    绑定到类的方法与绑定到对象的方法总结

    异同点

    相同

    绑定对象调用时都有自动传参的效果

    绑定到谁给谁就由谁来调用

    不同

    绑定到类的方法自动传入当前类

    绑定到对象的方法自动传入当前对象

  • 相关阅读:
    HDU
    HDU
    HDU
    CodeForces
    还没有过的题目记录
    HDU
    FZU
    排序:根据数组里某个对象排序
    获取当前毫秒数
    选择日期默认月初到月末
  • 原文地址:https://www.cnblogs.com/KrisYzy/p/11239704.html
Copyright © 2020-2023  润新知