小编Mic*_*eur的帖子

在 PYTHONPATH 设置为子目录的特殊情况下不理解 Python 模块

我遇到了一个让我对 Python 模块感到困惑的问题。我构建了一个最小的工作示例:

\n
$ tree\n\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 configuration.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 error_code.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 test.py\n
Run Code Online (Sandbox Code Playgroud)\n

应用程序/配置.py

\n
$ tree\n\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 configuration.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 error_code.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 test.py\n
Run Code Online (Sandbox Code Playgroud)\n

应用程序/错误代码.py

\n
import enum\n\nclass ErrorCode(enum.Enum):\n    Success = 0\n    Error1 = 1\n
Run Code Online (Sandbox Code Playgroud)\n

测试.py

\n
#!/usr/bin/env python\n\nfrom app.configuration import Configuration\nfrom app.error_code import ErrorCode\n\nc = Configuration()\n\nprint(c.status())\nprint(c.status() == ErrorCode.Error1)\n
Run Code Online (Sandbox Code Playgroud)\n

命令:PYTHONPATH=app ./test.py

\n

输出:

\n
from error_code import ErrorCode\n\nclass Configuration:\n    def status(self):\n        return self._status\n\n    def __init__(self):\n        self._status = ErrorCode.Error1\n
Run Code Online (Sandbox Code Playgroud)\n

为什么在这种情况下输出显示ErrorCode.Error1False相等检查?

\n

我想这与模块有关,因为如果在 app/configuration.py …

python module python-import

5
推荐指数
1
解决办法
65
查看次数

C++复制拥有POSIX文件描述符的对象的构造函数

我需要让C++对象在向量中拥有POSIX文件描述符.我有一个文件路径的向量,我用它来创建我的对象.这是我的代码:

main.cpp中

std::vector<MightyObject> mightyObjects;
std::vector<const char*> paths = {"awesomePath1", "awesomePath2"};
for (std::vector<const char*>::iterator it = paths.begin(); it != paths.end(); ++it)
{
    mightyObjects.emplace_back(MightyObject(*it));
}
Run Code Online (Sandbox Code Playgroud)

MightyObject.cpp

MightyObject::MightyObject(const char* path)
{
   this->fd = open(path, O_RDWR | O_NONBLOCK);
}

MightyObject::~MightyObject()
{
    close(this.fd);
}

MightyObject::MightyObject(const MightyObject& obj)
{
    this->fd = dup(obj.fd);
}

MightyObject& MightyObject::operator=(const MightyObject& other)
{
    this->fd = dup(other.fd);
    return *this;
}
Run Code Online (Sandbox Code Playgroud)

在mightyObjects中,我的对象包含错误的文件描述符......

我究竟做错了什么 ?

c++ linux

3
推荐指数
1
解决办法
591
查看次数

标签 统计

c++ ×1

linux ×1

module ×1

python ×1

python-import ×1