python - 在 python 中区分从类(或文件)内部和外部访问类属性
问题描述
让我们在 Python 中有一个示例类 Foo:
class Foo:
bar = 'bar'
def access_bar(self):
return self.bar
例如,我可以在Foo().bar
直接访问时打印警告,但同时在调用Foo().access_bar()
从类中访问该属性时不打印此警告吗?
我尝试实现__getattribute__
方法,但没有成功区分这些情况。
我知道这是一个很奇怪的问题,但请不要像“你不应该需要这个”那样回答我。
解决方案
您可以创建bar
一个允许控制访问而不向外部显示方法调用的属性,并将您的属性设为私有:
class Foo:
__bar = 'bar'
@property
def bar(self):
print("direct access")
return Foo.__bar
def access_bar(self):
return self.__bar
f = Foo()
print("warn",f.bar)
print("OK",f.access_bar())
印刷:
direct access
warn bar
OK bar
推荐阅读
- sql - POSTGRESQL - Float8 数据类型可以容纳十进制(21,7)吗?
- windows - System.Speech 选项,Windows 10 Powershell 中未显示已安装的文本转语音语音
- python - 如何将整数列表打印到 QPlainTextEdit?
- c - 函数“系统”的隐式声明在 C99 中无效
- javascript - 如何使用 reduce 查找元素并构建数组对象?
- reactjs - 在 useEffect 中添加缺少的依赖项会导致递归循环
- mysql - 初始匹配后行中没有重复项
- php - Behat 和 laravel 5.5:类哈希不存在
- swift - Swift 中的 MVVM - 在模型中没有值的 ViewModel 属性
- wordpress - 类别为空时的 WooCommerce 内部服务器错误