面向对象
发布日期:2021-05-06 08:38:44 浏览次数:23 分类:技术文章

本文共 6453 字,大约阅读时间需要 21 分钟。

                                               面向对象

一、类的定义

# 面向对象# 有意义的面向对象的代码# 类 = 面向对象# 类、对象# 类的基本作用:封装class Student():    name = "" # 全局变量    age = 0    def print_file(self):        print("name: " + self.name)        print("age: " + str(self.age))student = Student()student.print_file()

二、浅谈函数与方法的区别

    方法:设计层面

    函数:程序运行、过程式的一种称谓

三、类与对象

    类:类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。

四、构造函数

class Student():    # 一个班级的学生人数    # 类变量    sum = 0    name = "曹曹"    age = 20    # 实例变量    def __init__(self, name, age):        # 构造函数        # 初始化对象的属性        self.name = name        self.age = age    # 行为 与 特征    def do_homework(self):        print("homework")student = Student("小唐", 18)print("tudent.name: %s" %student.name)print("student.age: %s" %student.age)print("Student.sum: %s"%Student.sum)print("Student.name: %s"%Student.name)print("Student.age: %s" %Student.age)

    运行结果:

        

五、区别模块变量与类中的变量

class Student():    # 一个班级的学生人数    # 类变量    sum = 0    name = "曹曹"    age = 20    # 实例变量    def __init__(self, name, age):        # 构造函数        # 初始化对象的属性        self.name = name        self.age = age    # 行为 与 特征    def do_homework(self):        print("homework")student = Student("小唐", 18)print("tudent.name: %s" %student.name)print("student.age: %s" %student.age)print("Student.sum: %s"%Student.sum)print("Student.name: %s"%Student.name)print("Student.age: %s" %Student.age)

    运行结果:

        

六、类变量与实例变量

class Student():    # 一个班级的学生人数    # 类变量    sum = 0    name = "曹曹"    age = 20    # 实例变量    def __init__(self, name, age):        # 构造函数        # 初始化对象的属性        self.name = name        self.age = age    # 行为 与 特征    def do_homework(self):        print("homework")student = Student("小唐", 18)print("tudent.name: %s" %student.name)print("student.age: %s" %student.age)print("Student.sum: %s"%Student.sum)print("Student.name: %s"%Student.name)print("Student.age: %s" %Student.age)

    运行结果:

        

七、类与对象的变量查找顺序

        实例变量 >>> 类变量 >>> 类父类的变量    

class Student():    # 一个班级的学生人数    # 类变量    name = "曹曹"    age = 20    # 实例变量    def __init__(self, name, age):        # 构造函数        # 初始化对象的属性        self.name = name        self.age = age    # 行为 与 特征    def do_homework(self):        print("homework")student = Student("小唐", 18)print(student.__dict__)print("tudent.name: %s" %student.name)print("student.age: %s" %student.age)print(Student.__dict__)print("Student.name: %s"%Student.name)print("Student.age: %s" %Student.age)

    运行结果:

        

八、self与实例方法    

class Student():    # 一个班级的学生人数    # 类变量    name = "曹曹"    age = 20    # 实例变量    def __init__(self, name, age):        # 构造函数        # 初始化对象的属性        self.name = name        self.age = age    # 行为 与 特征    # 实例方法    def do_homework(self):        print("homework")student = Student("小唐", 18)student.do_homework()

    运行结果:

        

九、在实例方法中访问实例变量与类变量 

class Student():    # 一个班级的学生人数    # 类变量    name = "曹曹"    age = 20    sum_num = 100    # 实例变量    def __init__(self, name, age):        # 构造函数        # 初始化对象的属性        self.name = name        self.age = age    # 行为 与 特征    # 实例方法    def do_homework(self):        # 调用实例变量        print(self.name)        print(self.age)        # 调用类变量        print(Student.sum_num)        print(self.__class__.sum_num)student = Student("小唐", 18)student.do_homework()

    运行结果:

        

十、类方法

class Student():    # 一个班级的学生人数    # 类变量    sum_num = 100    # 实例变量    def __init__(self, name, age):        # 构造函数        # 初始化对象的属性        self.name = name        self.age = age        self.__class__.sum_num += 1        print("班级学生人数为:" + str(self.__class__.sum_num))    # 类方法    @classmethod    def plus_sum(cls):        cls.sum_num += 1        print(cls.sum_num)student = Student("小唐", 18)student.plus_sum()Student.plus_sum()

    运行结果:

        

十一、静态方法

class Student():    # 一个班级的学生人数    # 类变量    sum_num = 100    # 实例变量    def __init__(self, name, age):        # 构造函数        # 初始化对象的属性        self.name = name        self.age = age    # 类方法    @classmethod    def plus_sum(cls):        cls.sum_num += 1        print(cls.sum_num)    # 静态方法    @ staticmethod    def add(x, y):        print(x + y)student = Student("小唐", 18)student.add(2, 3)Student.add(4, 5)

    运行结果:

        

十二、成员可见性:公开和私有

class Student():    # 一个班级的学生人数    # 类变量    sum_num = 100    # 实例变量    def __init__(self, name, age):        # 构造函数        # 初始化对象的属性        self.name = name        self.age = age        # 私有变量        self.__score = 0    def marking(self, score):        if score < 0:            return "分数不能为负分!"        self.__score = score        return self.name + "同学本次考试分数为:" + str(self.__score)student = Student("小唐", 18)result = student.marking(-1)print(result)result = student.marking(59)print(result)

    运行结果:

        

十三、没有什么是不能访问    

class Student():    # 一个班级的学生人数    # 类变量    sum_num = 100    # 实例变量    def __init__(self, name, age):        # 构造函数        # 初始化对象的属性        self.name = name        self.age = age        # 私有的        self.__score = 0    def marking(self, score):        if score < 0:            return "分数不能为负分!"        self.__score = score        return self.name + "同学本次考试分数为:" + str(self.__score)student1 = Student("小唐", 18)result = student1.marking(59)print(result)# 新添加了一个实例变量__scorestudent1.__score = 100print(student1.__dict__)print(student1.__score)student2 = Student("小曹", 18)print(student2.__dict__)print(student2.__score)

    运行结果:

        

十四、继承

    注意:python中,一个子类可以继承多个父类。

    

    实例:

        1、父类:

class Person():    # 实例变量    def __init__(self, name, age):        # 构造函数        # 初始化对象的属性        self.name = name        self.age = age    def getName(self):        return self.name

    2、子类:    

from c9 import Personclass Student(Person):    # 实例变量    def __init__(self, school, name, age):        # 构造函数        # 初始化对象的属性        self.school = school        Person.__init__(self, name, age)student = Student("人民路小学", "小唐", 18)print(student.school)print(student.name)print(student.age)

    运行结果:

        

十五、子类方法调用父类方法:super关键字

    1、父类:

class Person():    # 实例变量    def __init__(self, name, age):        # 构造函数        # 初始化对象的属性        self.name = name        self.age = age    def getName(self):        return self.name    def doHomeWork(self):        print("This is a parent method!")

    2、子类:

from c9 import Personclass Student(Person):    # 实例变量    def __init__(self, school, name, age):        # 构造函数        # 初始化对象的属性        self.school = school        # 不建议        # Person.__init__(self, name, age)        super(Student, self).__init__(name, age)    def doHomeWork(self):        super(Student, self).doHomeWork()        print("This is a children method!")student = Student("人民路小学", "小唐", 18)print(student.school)print(student.name)print(student.age)student.doHomeWork()

    运行结果:

        

上一篇:正则表达式与JSON
下一篇:vue-router路由 学习笔记

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2025年03月19日 09时22分25秒