封装

什么是封装?
广义上(大家认为的) :
把一类事务的相同的行为和属性归到一个类中
狭义上(学术上的定论) :
  把一些特殊的属性和方法藏在类中
  外部无法调用,只有内部可以调用
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)     # 绝不能在后续我们的代码中出现这种情况
 
原文地址:https://www.cnblogs.com/qizt/p/10009944.html