首页 Python基础入门视频教程 Python内置特殊方法:面向对象小结案例
pay pay

Python内置特殊方法:面向对象小结案例

日期: 二月 14, 2023, 8:52 a.m.
阅读: 399
作者: Python自学网-村长

摘要: 面向对象-内置特殊方法-面向对象小结案例

00:00 / 15:00
1x
2x
1.5x
1.25x
1x
0.8x
0.5x
>
面向对象
    1. 第1课:Python面向对象程序设计
      15分钟
    2. 第2课:类属性和对象属性
      15分钟
    3. 第3课:类属性和对象属性操作本质对比
      15分钟
    4. 第4课:类属性和对象属的区别和使用对比
      15分钟
    5. 第5课:Python类方法的创建
      15分钟
    6. 第6课:实例方法,类方法和静态方法
      15分钟
    7. 第7课:三种方法访问权限对比
      15分钟
    8. 第8课:面向对象基础-元类
      15分钟
    9. 第9课:类属性,私有化属性,受保护属性的访问区别
      15分钟
    10. 第10课:面向对象-属性-私有化属性
      15分钟
    11. 第11课:面向对象-属性-只读属性
      15分钟
    12. 第12课:property操作只读属性
      15分钟
    13. 第13课:属性安全补充
      15分钟
    14. 第14课:内置属性
      15分钟
    15. 第15课:类属性,实例属性,初始化属性
      15分钟
    16. 第16课:面向对象-方法-方法回顾
      15分钟
    17. 第17课:内置特殊方法-对象信息重写
      15分钟
    18. 第18课:内置特殊方法-调用
      15分钟
    19. 第19课:内置特殊方法-索引操作
      15分钟
    20. 第20课:内置特殊方法-切片
      15分钟
    21. 第21课:内置特殊方法-对象比较
      15分钟
    22. 第22课:内置特殊方法-上下文环境的布尔值
      15分钟
    23. 第23课:内置特殊方法-迭代和遍历
      15分钟
    24. 第24课:内置特殊方法-描述器
      15分钟
    25. 第25课:内置特殊方法-装饰器
      15分钟
    26. 第26课:内置特殊方法-对象生命周期
      15分钟
    27. 第27课:内置特殊方法-面向对象小结案例
      15分钟
    28. 第28课:三大特性-继承和继承关系
      15分钟
    29. 第29课:三大特性-资源的继承和使用
      15分钟
    30. 第30课:三大特性-资源的覆盖或累加
      15分钟
    31. 第31课:三大特性-多态
      15分钟
    32. 第32课:面向对象-抽象类
      15分钟

面向对象-内置特殊方法-面向对象小结案例。

# 统计一个类被实例化多少次

# 1.使用生命周期方法实现统计对象个数
num = 0
class Student(object):
    def __init__(self):
        global num  # 引入全局变量,方便在外面直接查看对象个数
        print('增加了一个实例对象')
        num += 1

    def __del__(self):
        global num
        print('删除了一个实例对象')
        num -= 1


s = Student()  # 显示增加一个实例,但是执行完之后会被释放
print(num)
del s  # 自动调用类中__del__方法
print(num)
# 2.通过函数实现统计功能
num = 0
class Student(object):
    def __init__(self):
        global num  # 引入全局变量,方便在外面直接查看对象个数
        print('增加了一个实例对象')
        num += 1

    def __del__(self):
        global num
        print('删除了一个实例对象')
        num -= 1

    def total(self):  # 通过方法来显示最终对象个数
        global num
        print(num)

s1 = Student()  # 显示增加一个实例,但是执行完之后会被释放
s2 = Student()
s1.total()
del s1  # 自动调用类中__del__方法
# s1.total()  # NameError: name 's1' is not defined;实例被删除,所以这种调用不好,total()改查静态方法
# 3.通过静态方法实现统计
num = 0
class Student(object):
    def __init__(self):
        global num  # 引入全局变量,方便在外面直接查看对象个数
        print('增加了一个实例对象')
        num += 1

    def __del__(self):
        global num
        print('删除了一个实例对象')
        num -= 1

    @staticmethod
    def total():  # 通过方法来显示最终对象个数
        global num
        print(num)

s1 = Student()  # 显示增加一个实例,但是执行完之后会被释放
s2 = Student()
Student.total()  # 静态方法使用Student类调用就不会报错了
del s1  # 自动调用类中__del__方法
Student.total()  # 使用类调用静态方法,不会报错
# 但是这时候num是全局变量只要赋值就会改变其值
num = 100
s3 = Student()
Student.total()  # 这里编程101个
# 需要把num变成类属性,才能解决,注意不要变成实例属性,
# 4.使用
class Student(object):
    __num = 0
    def __init__(self):
        print('增加了一个实例对象')
        # num += 1  # 访问类属性错误
        Student.__num += 1

    def __del__(self):
        print('删除了一个实例对象')
        self.__class__.__num -= 1  # 和上面的Student.num += 1一样作用

    # @staticmethod
    # def total():
    #     print(Student.__num)

    @classmethod
    def total(cls):
        print(cls.__num)

s1 = Student()
s2 = Student()
Student.total()
del s1
Student.total()
# 但是这里我们在外界任然能访问公有属性num,也可以修改,所以要把num变成私有属性__num
# total()也可以改成类方法

 

原创视频,版权所有,未经允许,切勿转载,违者必究!
回顶部