• 封装


    什么是封装?
    广义上(大家认为的) :
    把一类事务的相同的行为和属性归到一个类中
    狭义上(学术上的定论) :
      把一些特殊的属性和方法藏在类中
      外部无法调用,只有内部可以调用
    class Dog:
        def bite(self):pass
    dog = Dog()
    dog.bite() # 从一个类的外部调用了bite方法
    
    class Dog:
        dog_sum = 0
        def __init__(self):
            self.count()    # 从一个类的内部调用了count方法
        def count(self):
            Dog.dog_sum += 1
    
    alex = Dog()
    print(Dog.dog_sum)
    
    alex.count()            # # 从一个类的外部调用了count方法
    alex.count()
    alex.count()
    print(Dog.dog_sum)
    隐藏静态属性
    class Dog:
        # dog_sum = 0         # 不安全,因为这个属性可以在类的外部被随便修改
        __dog_sum = 0         # 安全,通过dog_sum方法和__变量名让属性变成只能看不能改的值
        def __init__(self):
            self.count()
        def count(self):
            Dog.__dog_sum += 1 # 可以从一个类的内部使用__dog_sum的属性
        def dog_sum(self):
            return Dog.__dog_sum
    
    print(Dog.__dict__)
    alex = Dog()
    print(Dog.__dict__)
    # print(Dog.__dog_sum)    # 不可以从外部直接使用这个变量
    print(alex.dog_sum())
    
    class Dog:
        __dog_sum = 0       # 私有的静态属性 _Dog__dog_sum
        def __init__(self):
            self.count()
        def dog_sum(self):
            return Dog.__dog_sum # 只要是在类的内部使用__名字,默认就被改成 _类名__名字
    
    print(Dog.__dict__)
    print(Dog._Dog__dog_sum)     # 绝不能在后续我们的代码中出现这种情况
     
  • 相关阅读:
    asp.net 奇淫技巧
    生成缩略图不清晰
    NPOI相关
    Dapper
    Newtonsoft.Json高级用法(转载)
    swfobject2.2
    如何把SQLServer数据库从高版本降级到低版本? (转载)
    Smallpdf 轻松玩转PDF。我们爱它。
    Simple Data
    在HTML中优雅的生成PDF
  • 原文地址:https://www.cnblogs.com/qizt/p/10009944.html
Copyright © 2020-2023  润新知