python-15-对象封装

一、封装是面向对象编程的一大特点

  面向对象编程第一步 —— 将属性和方法封装到一个抽象的类中

  外界使用类创建对象,然后让对象调用方法

  对象方法的细节 都被封装 在类的内部

  一个对象的属性可以是另外一个类创建的对象

二、身份运算符

  is,is not

  is比较变量的内存地址是否一样。x is y 类似于 id(x) = id(y),而== 比较的是引用变量的值是否相等。

  is not 类似于 id(x)!= id(y)

  针对None比较时应该用is我不是==。

三、私有属性和私有方法

  1、应用场景

  在实际开发中,对象的某些属性和方法,可能只希望在对象内部被使用,而不希望在外部被访问到

  私有属性,就是对象不希望公开的属性

  私有方法,就是对象不希望公开的方法

  2、定义方式

  在定义属性和方法时,在属性名和方法前增加两个下划线,定义的就是私有属性或方法

  

class Woman:
    def __init__(self, name):
        self.name = name
        self.__age = 18

    def secret(self):
        print("%s 的年龄是 %d" % (self.name, self.__age))


xf = Woman("小芳")
print(xf.__age)
xf.secret()

class Woman:
    def __init__(self, name):
        self.name = name
        self.age = 18

    def __secret(self):
        print("%s 的年龄是 %d" % (self.name, self.age))


xf = Woman("小芳")
print(xf.age)
xf.__secret()

 

 四、伪私有属性和私有方法

  在日常开发中,不要使用这种方式,访问对象的私有属性 或 私有方法

  1、python中并没有真正意义的私有

    在给属性、方法命名时,实际是对 名称做了一些特殊处理,使外界无法访问到

    处理方式:在名称前面加上 _类名=>_类名__名称

 1 class Woman:
 2     def __init__(self, name):
 3         self.name = name
 4         self.__age = 18
 5 
 6     def __secret(self):
 7         print("%s 的年龄是 %d" % (self.name, self.__age))
 8 
 9 
10 xf = Woman("小芳")
11 print(xf._Woman__age)
12 xf._Woman__secret()

   

  

  

  

原文地址:https://www.cnblogs.com/onroad2019/p/12187206.html