首页 > 其他 > 详细

026 面向对象05——封装

时间:2018-03-09 19:38:53      阅读:228      评论:0      收藏:0      [点我收藏+]

0、复习

继承 (了解)
抽象类和接口类 from abc import ABCMeta,abstractmethod
python中没有内置 接口的概念,所有的抽象类和接口类都是用来规范子类的
接口类和抽象类不能被实例化
多态 (了解)
java中的多态和python中的鸭子类型
在某些强数据类型语言中,
归一化设计(函数的参数的问题上),需要传递参数的数据类型
为了几个类的对象都可以作为参数传递给函数,
就给这几个类创建一个父类,这样的话让父类成为这个参数的数据类型
子类的所有对象就都能够作为参数传递了
在python中,传递参数的时候,是弱数据类型特征,不需要指定参数的数据类型
鸭子类型 (list tuple str)
多个有相似特征的数据类型之间,不通过继承建立关系.
而是通过一种约定俗成的制度来约束
list tuple str ---> 序列

1、封装

封装
广义上的封装 : 属于一个类的静态和动态属性 总是出现在一个类中
使用的使用永远用类名或者对象名调用
狭义上的封装 : 就是把变量\方法私有化,在类的外部以及子类中不能直接使用了
技术分享图片
class A:
    STATIC = aaa  # 静态变量
    __S = bbb     # 私有的静态变量
    def wahaha(self):
        print(A.__S) # _A__S
print(A.STATIC)
print(A.__dict__)
print(A._A__S)      # 在类的外面调用私有的变量
a = A()
a.wahaha()
A.__B = ccc   #在类的外部添加了一个静态变量
print(A.__dict__)  #我们不能在一个类的外部创建一个"私有的"变量
print(A.__B)
私有的静态变量
技术分享图片
class B:
    def __init__(self,name,pwd):
        self.name = name
        self.__pwd = pwd   # 也可以创建对象的私有属性

    def qqxing(self):
        self.__a = A     # _B__a

    def get_pwd(self):
        print(self.__pwd)
b = B(alex,alex3714)
b.qqxing()
print(b.name)
print(b._B__pwd)  # 当在类外部的时候,我们也不能直接使用对象的私有属性
b.get_pwd()
创建对象的私有属性并调用
私有的 静态变量 对象属性 方法
私有的 只能在类的内部定义和使用
__名字
在类外部使用私有静态变量 _类名__私有的名字
私有的名字 不能被子类继承

java
private 私有的 - __变量名
protect 保护的 - N/A
public 公共的 - 正常的变量
技术分享图片
class Room:
    def __init__(self,owner,price,length,width,height):
        self.owner = owner
        self.__price_single = price  #单价
        self.__length = length
        self.__width = width
        self.height = height

    def get_area(self):
        return self.__length * self.__width

    def get_price(self):
        return self.__price_single * self.get_area()

alex = Room(alex,1000000,2,1,0.8)
print(alex.get_area())
print(alex.get_price())
还是封装

 

2、内置函数property

通过将内置函数 property作为装饰器 @property   来实现将一个方法(函数)伪装成属性

3、

4、

026 面向对象05——封装

原文:https://www.cnblogs.com/Garland-py/p/8535345.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!