zoukankan      html  css  js  c++  java
  • Python_面向对象

    一.面向对象技术简介

    • 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
    • 方法:类中定义的函数。
    • 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
    • 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
    • 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
    • 局部变量:定义在方法中的变量,只作用于当前实例的类。
    • 实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。
    • 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
    • 实例化:创建一个类的实例,类的具体对象。
    • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

    和其它编程语言相比,Python 在尽可能不增加新的语法和语义的情况下加入了类机制。

    Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法。

    对象可以包含任意数量和类型的数据。

    注意:

    类的名称,首字母最好使用大写字母

    类的基本作用:封装

    类的内部不能调用,和使用方法

    二.创建一个类

    代码段

    class Student():
        name = ''
        age = 0
        
        def print_file(self):
            print('name:' + self.name)      # 调用类里面的方法,参数需要加上self
            print('age:' + str(self.age))
    student = Student()     # 实例化
    
    student.print_file()        # 调用类里面的方法
    

      输出结果

    name:
    age:0
    

      

    三.调用类

    在另一个模块下调用类

    代码段

    from createObject import Student     # 调用类
    
    student = Student()
    
    student.print_file()
    

      输出结果

    name:
    age:0
    name:
    age:0
    

      

    四.构造函数

    常识

    # 类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起
    # 类相当于模板,里面可以有很多不同的对象
    # python魔法方法:__init__( )方法,被称为构造方法。__init__()方法的魔力体现在只要实例化一个对象,这个方法就会在对象被创建时自动调用。实例化对象时是可以传入参数的,这些参数会自动传入__init__()方法中,可以通过重写这个方法来自定义对象的初始化操作。

    1.一个类里面,可存在多个对象

    代码段

    class Student():
        name = ''
        age = 0
     def do_homework(self):
            print('homework')
    
    student1 = Student()
    student2 = Student()
    student3 = Student()
    
    # 打印内存地址
    print(id(student1)) 
    print(id(student2))   # 查看内存地址
    print(id(student3))
    

      输出结果:虽然输出结果是一样,但是内存地址不一样

    1528568316032
    1528568316256
    1528568317936
    

    2.使用构造函数,定义不同的对象

    代码段

    class Student():
        name = ''
        age = 0
        def __init__(self,name,age):     # __init__构造函数
            print("student")
            return None    # 增加return也只能返回None,否则为报错
        # 行为 与 特征
        def do_homework(self):
            print('homework')
    student1 = Student('joy',18) # 如果不使用构造函数__init__,括号中传入实参就会报错

     输出结果:

    student
    

    注意:

    函数中不加return,返回结果为None

     代码段

    class Student():
        name = ''
        age = 0
        def __init__(self):     # __init__构造函数
            print("student")
    student1 = Student()
    a = student1.__init__()  # 没有return,返回结果为 None
    print(a)

      输出结果

    student   # 加了构造函数,python会自己调用构造函数
    student
    None
    
    

     构造函数,增加return,也只能返回None,否则会报错

  • 相关阅读:
    @JsonFormat和@DateTimeFormat 实践测试
    spring jpa CrudRepository save 新建数据没有返回id
    多线程处理pdf附件转换
    contentsize ,ios 7和 ios7之前的 有点差别,
    区别,
    裁切图片,
    transform,
    简洁代码,
    这个系统,流程,入口,业务逻辑,
    pop,pop,如果break,会pop两次,
  • 原文地址:https://www.cnblogs.com/joy-sir/p/12591357.html
Copyright © 2011-2022 走看看