我在一周前开始使用python进行编码,这是我的错误,我很快就开始使用oops,类和对象进行编码.我认为我的C++熟练程度会有所帮助....我得到了以下代码
class A:
var=0
list=[]
def __init__(self):
pass
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,var和list是有点全局变量,它似乎在所有实例中共享....我认为它在所有实例中都是不同的.....我花了半天才弄明白那....它没有任何意义,一个变量只能被一个类对象访问,但是在所有实例之间共享.......只是好奇,它背后有原因吗??? ??
如果函数的返回类型不是void
,并且函数没有返回任何内容,那么我猜编译器会返回一个垃圾值(可能被视为未初始化的值).它发生在编译时,为什么不应该抛出错误呢?
例如,
int func1() {
return; // error
}
int func2() {
// does not return anything
}
Run Code Online (Sandbox Code Playgroud)
第二个func2
应该抛出错误,但事实并非如此.有原因吗?我的想法是,它可以看作是一个未初始化的值,所以如果我们需要在第二种情况下抛出错误,那么我们需要抛出错误,如果一个值是未初始化的,比如说
int i; // error
int i = 6; // okay
Run Code Online (Sandbox Code Playgroud)
有什么想法,或者这是一个重复的问题?我感谢您的帮助.
我只是想知道,如何在内部存储引用?我觉得深层次的理解会让我更好地理解概念指针与参考,并做出决策选择.
我怀疑它基本上与指针一样,但编译器负责处理指针.请指教.
如果我有一个不需要在.hpp文件中完整定义的类,我通常主要使用前向声明
例)
//B.hpp
namespace A_file {
class A;
}
namespace B_file {
class B {
public:
B();
private:
A *ptr_to_A;
}
}
//B.cpp
#include "A.hpp"
using namespace A_file;
namespace B_file {
B(int value_) {
*ptr_to_A = new A(value_);
}
int some_func() {
ptr_to_A->some_func_in_A();
}
}
Run Code Online (Sandbox Code Playgroud)
我写这种代码.我想,它将再次包括整个hpp.(随意评论,如果你的事情,这是不健康的)
有没有办法可以对std命名空间中的对象/类做同样的事情?如果有办法,可以,还是有副作用?
我的意思是,我试图在课堂内重载操作符<<
像这样
class A {
public:
ostream &operator<<(ostream &os);// which doesnt work
private:
friend ostream &operator<<(ostream &os, const A& a); //Works
int i;
};
Definition
ostream &operator<<(ostream &os, const A& a) {
os<<a.i;
return os;
}
Run Code Online (Sandbox Code Playgroud)
为什么我不能在特定于类的类中重载运算符?还是我错过了什么?或者我是愚蠢甚至以这样的方式思考?请指教.
我正在编写一个bash脚本,它将执行一个命令并将值存储在一个字符串变量中,现在我需要在某些字符之后拆分字符串.有办法吗?我不能使用分隔符因为格式有点像这样
PV Name /dev/sda2
PV Size 10.39 GB
Run Code Online (Sandbox Code Playgroud)
在这里,我需要获取/ dev/sda2和10.39 GB(如果可能,仅10.39)并将其写入新文件.我不能使用分隔符,因为空间是最初的..我没有做太多的bash脚本.有没有办法做到这一点?
我一直在使用 python getopt 进行解析,无论是短的还是长的,效果都很好。现在我需要在 getopt 函数中添加一些更多的短变量,如果我需要多个字符作为 getopt:short ,它看起来会更好。有没有办法做这样的事情。
getopt.getopt(argv,"hf:c:d:pv:pz:","")
Run Code Online (Sandbox Code Playgroud)
在这里,我需要将 pv 和 pz 作为单独的命令行参数来访问,而不是 getopt 将其读取为“无参数的 p”、“有一个参数的 v”。我在引号内尝试了“pv:”[pv:],但它识别了 pv,但不读取参数。
另外,(在不同的注释上)对于相同的参数是否可以有多个输入。请原谅我,如果这是一个非常简单的答案。
我试图从Python脚本运行命令(使用Popen())获取输出为列表,而不是字符串.
例如,当我使用Popen()时,它将输出作为字符串.对于像"vgs,vgdisplay,pvs,pvdisplay"这样的命令,我需要将输出作为列表并且应该能够解析它的行和列,以便我可以执行必要的操作(比如删除已经存在的Vg等等) .我只是想知道,如果有可能得到列表或至少转换为列表....
我一周前开始学习python,所以我可能错过了一些简单的技巧,请原谅我.....
我正在尝试这样的代码
//A.hpp
class A{
public:
A() {}
virtual const char *message() const {return "A ERROR";}
};
//B.hpp
#include "A.hpp"
class B:public A {
public:
B() {}
const char *message() const {return "B ERROR";}
};
//main.cpp
#include "A.hpp"
#include "B.hpp"
void foo(const A& a) {
/* case 1 */ throw a; /* (or) */ /* case 2 */ throw B(); // LINE 100
}
int main() {
B b;
A &a(b);
b.message(); // OUTPUT: B ERROR
try {
foo(a);
} catch …
Run Code Online (Sandbox Code Playgroud) 我需要自动执行以下命令
cmd="yes | vgremove <vgname>"
Run Code Online (Sandbox Code Playgroud)
每当我用这个命令编码
Popen(cmd.split(),stdout=PIPE,stderr=PIPE)
Run Code Online (Sandbox Code Playgroud)
它没有完成.我怀疑它等待命令完成,所以管道被击中,是否有替代品?