小编how*_*rks的帖子

类变量在python中的所有实例之间共享?

我在一周前开始使用python进行编码,这是我的错误,我很快就开始使用oops,类和对象进行编码.我认为我的C++熟练程度会有所帮助....我得到了以下代码

class A:
     var=0
     list=[]
     def __init__(self):
            pass
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,var和list是有点全局变量,它似乎在所有实例中共享....我认为它在所有实例中都是不同的.....我花了半天才弄明白那....它没有任何意义,一个变量只能被一个类对象访问,但是在所有实例之间共享.......只是好奇,它背后有原因吗??? ??

python class global-variables instance-variables member

24
推荐指数
3
解决办法
3万
查看次数

如果函数没有返回值,并且返回类型有效,编译器是否可以抛出垃圾?

如果函数的返回类型不是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)

有什么想法,或者这是一个重复的问题?我感谢您的帮助.

c c++ initialization return-value garbage

14
推荐指数
3
解决办法
7056
查看次数

引用如何内部存储在c ++中?

我只是想知道,如何在内部存储引用?我觉得深层次的理解会让我更好地理解概念指针与参考,并做出决策选择.

我怀疑它基本上与指针一样,但编译器负责处理指针.请指教.

c++ pointers reference

12
推荐指数
2
解决办法
2630
查看次数

在std命名空间中转发变量/类的声明

如果我有一个不需要在.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命名空间中的对象/类做同样的事情?如果有办法,可以,还是有副作用?

c++ class std forward-declaration

11
推荐指数
1
解决办法
4543
查看次数

重载运算符<<在类内部工作吗?

我的意思是,我试图在课堂内重载操作符<<

像这样

 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)

为什么我不能在特定于类的类中重载运算符?还是我错过了什么?或者我是愚蠢甚至以这样的方式思考?请指教.

c++ operator-overloading ostream

8
推荐指数
2
解决办法
1万
查看次数

需要在特定数量的字符后在bash中拆分字符串

我正在编写一个bash脚本,它将执行一个命令并将值存储在一个字符串变量中,现在我需要在某些字符之后拆分字符串.有办法吗?我不能使用分隔符因为格式有点像这样

  PV Name /dev/sda2
  PV Size 10.39 GB
Run Code Online (Sandbox Code Playgroud)

在这里,我需要获取/ dev/sda2和10.39 GB(如果可能,仅10.39)并将其写入新文件.我不能使用分隔符,因为空间是最初的..我没有做太多的bash脚本.有没有办法做到这一点?

string variables bash

5
推荐指数
2
解决办法
2万
查看次数

Python getopt 中的多字符命令解析

我一直在使用 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 getopt command-line-arguments

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

需要在Popen或任何其他系统命令中将输出作为列表而不是字符串

我试图从Python脚本运行命令(使用Popen())获取输出为列表,而不是字符串.

例如,当我使用Popen()时,它将输出作为字符串.对于像"vgs,vgdisplay,pvs,pvdisplay"这样的命令,我需要将输出作为列表并且应该能够解析它的行和列,以便我可以执行必要的操作(比如删除已经存在的Vg等等) .我只是想知道,如果有可能得到列表或至少转换为列表....

我一周前开始学习python,所以我可能错过了一些简单的技巧,请原谅我.....

python subprocess list popen

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

异常处理+多态,如果异常方法不起作用,则在同一个类中不起作用

我正在尝试这样的代码

//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)

c++ polymorphism virtual-functions exception throw

2
推荐指数
1
解决办法
1471
查看次数

Popen包含需要对所有输出说"是"的命令

我需要自动执行以下命令

cmd="yes | vgremove <vgname>"
Run Code Online (Sandbox Code Playgroud)

每当我用这个命令编码

Popen(cmd.split(),stdout=PIPE,stderr=PIPE)
Run Code Online (Sandbox Code Playgroud)

它没有完成.我怀疑它等待命令完成,所以管道被击中,是否有替代品?

python subprocess pipe popen

2
推荐指数
1
解决办法
1891
查看次数