请问python里如何实现接口的选择性封装?
时间:2010-11-16
来源:互联网
第一个问题:
比如我在C++里会用这种方法来选择性地开放类接口:
复制代码
这样除了Imp自己之外,只有SpecialUser可以调用Imp::fun,其他任何类(包括Imp的派生类)都无法调用它,也可以通过向Interface4SpecialUser中添加更多的friend class来选择性开放给更多的类。即使有hack方法能绕过这个封装机制至少也可以防止大多数的误用了。
那么在python里如何实现这种接口的选择性开放呢?(即把某个类的某些接口只开放给指定的类调用,并且被指定的类可以是完全独立的,没有继承方面的限制)
第二个问题:
复制代码
假如我想在Derived里对Base.fun1封装一下,比如在每次调用它之前都会先调用外部的一个回调,那么我就不想让Derived的使用者能够直接调用Base.fun1(因为那样就绕过了Derived里的封装),这个封装该怎么实现呢?
先谢谢各位大牛……
比如我在C++里会用这种方法来选择性地开放类接口:
- class Interface4SpecialUser
- {
- friend class SpecialUser;
- private:
- virtual void fun(void) =0;
- };
-
- class Imp : public Interface4SpecialUser
- {
- public:
- void fun2() {}
- private:
- virtual void fun(void) {}
- };
那么在python里如何实现这种接口的选择性开放呢?(即把某个类的某些接口只开放给指定的类调用,并且被指定的类可以是完全独立的,没有继承方面的限制)
第二个问题:
- class Base :
- def fun1( self ) :
- pass
- def fun2( self ) :
- pass
-
- class Derived( Base ) :
- pass
先谢谢各位大牛……

作者: sjinny 发布时间: 2010-11-16
不知道楼主要的是不是 decorator?

作者: ncoder 发布时间: 2010-11-17
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28