python - 如何从不同的文件类函数导入变量
问题描述
self.assertFalse(b.__is_manual) AttributeError: 'BaseResource' object has no attribute '_Resources__is_manual'
我test_resources.py
的是
class Resources(TestCase):
def test_disable_manual_mode(self):
self.assertFalse(b.__is_manual)
if __name__=='__main__':
b = base.BaseResource()
unittest.main()
我base.py
的是
class BaseResource(object):
def __init__(self, index=0, parent=None, **kwargs):
self.__is_manual = False
def disable_manual_mode(self):
self.__is_manual = False
两者都在我要导入的同一目录__is_manual
中test_resouces.py
我该怎么做。
我已经尝试过b.__is_manual
,但它给出了错误(如上所述)
解决方案
在 Python 中不存在只能从对象内部访问的“私有”实例变量。但是,大多数 Python 代码都遵循一个约定:前缀为下划线的名称(例如 _spam)应被视为 API 的非公共部分(无论是函数、方法还是数据成员) . 它应被视为实施细节,如有更改,恕不另行通知。对象的实例化必须在测试类中。
将属性命名为 时__is_manual
,您将其定义为“受保护”属性,您无法访问它。简化您的代码。
class BaseResource(object):
def __init__(self, index=0, parent=None, **kwargs):
self.is_manual = False
def disable_manual_mode(self):
self.is_manual = False
此外,对象的实例化必须在测试类中。
class Resources(TestCase):
def test_disable_manual_mode(self):
b = base.BaseResource()
self.assertFalse(b.is_manual)
if __name__=='__main__':
unittest.main()
推荐阅读
- torch - windows系统安装torch 1.0.1.post2
- python - “如何解决这个问题中的‘函数调用问题’”
- javascript - 在ionic2 + bootstrap4中滚动时,粘性页脚与屏幕一起移动
- java - 获取给定键的树形图中的相邻键/值对
- apache-spark - Spark 不允许在同一 Spark SQL 查询中对同一数据源进行单独查询
- java - 慢跑。OpenGL。如何更新 VBO?
- python - 在两个时间戳之间创建 5 分钟的间隔
- jquery - 查询。$.get(url, callback) 不会触发回调
- python - python将输出写入csv文件
- java - 如何在此代码中显示负数阶乘