Python学习基础笔记五十八——封装

封装:广义上的面向对象封装。代码的保护。面向对象的思想本身就是一种封装,只让自己的对象能调用自己类中的方法。

狭义的封装概念:面向对象的三大特性之一:让属性和方法都藏起来,不让你看见。

例1:

class Person:
    def __init__(self, name, passwd):
        self.name = name
        self.__passwd = passwd


chang = Person('chang', '123456')
print(chang.name)
print(chang.passwd)

结果:

Python学习基础笔记五十八——封装_第1张图片

在前面加了两个下划线,这个passwd已经变成了私有属性。

class Person:
    def __init__(self, name, passwd):
        self.name = name
        self.__passwd = passwd    # 私有属性


chang = Person('chang', '123456')
print(chang.name)
# print(chang.passwd)
print(chang.__dict__)             #
print(chang._Person__passwd)

 我们工作中是不能这么用的。

只能在代码级别变成了私有。

class Person:
    def __init__(self, name, passwd):
        self.name = name
        self.__passwd = passwd  # 私有属性

    def get_pwd(self):
        return self.__passwd    # 只要在类的内部使用私有属性,就会自动带上一个_类名


chang = Person('chang', '123456')

print(chang.get_pwd())

所有的私有,都是在变量的左边加上双下划线;所有的私有的,都不能在类的外部使用。

在类的内部,可以定义类的私有属性、类中的私有方法、类中的静态属性。

这种私有化只是从代码级别做了变形,并没有真的约束。

变形机制_类名__名称, 在类外用这个调用,在类的内部直接__名字调用。

你可能感兴趣的:(Python,python)