标签: class-variables

Python:“self”不可下标

我有一个包含多个字典变量的类。有没有办法设置类变量的字典参数,其中变量名在函数中作为字符串传递?

<?php
class Test:
    var1 = { "value": 1 }
    var2 = { "value": 2 }

    def set_variable(self, var_name, value):
        ## self.var_name.value = value ### pylint: Instance of 'Test' has no 'var_name' member
        self[var_name]["value"] = value ### pylint: 'self' is unsubscriptable ###

instance = Test()
instance.set_variable("var1", 150)
Run Code Online (Sandbox Code Playgroud)

在编码时,linter 会抛出错误,指出:“‘self’不可订阅”。如果执行代码,我会收到错误:“TypeError:'Test'对象不可下标”。

解决此问题的一种方法是使用“getattr”创建临时变量:

    def set_variable(self, var_name, value):
        temp = getattr(self, var_name)
        temp["value"] = value
        setattr(self, var_name, temp)
Run Code Online (Sandbox Code Playgroud)

但是,我发现上面的解决方案增加了内存使用量,特别是对于更大的字典来说是一个丑陋的解决方案。

另外,我想在很多地方使用 self[var_name] 。有没有办法做到这一点?

python dictionary self class-variables

0
推荐指数
1
解决办法
6746
查看次数

C# 中类变量和实例变量的区别

我正在完成基础编程课程,但我无法理解类变量和实例变量(静态和非静态)之间的区别。我需要在代码中确定两者之间的区别

\n\n
Class StudentDetails\n{\nInt rollNumber;\nString studentName;\n}\nStudentDetails firststudent= StudentDetails (19236, \xe2\x80\x9dThomas\xe2\x80\x9d);\n
Run Code Online (Sandbox Code Playgroud)\n\n

我相信 rollNumber、studentName、19236 和“Thomas”都是实例变量,firststudent 是类变量。

\n\n

任何有关这方面的帮助将不胜感激,因为课程材料不是很有帮助。

\n

c# instance-variables static-variables class-variables

0
推荐指数
1
解决办法
5621
查看次数

Memeber 变量作为 C++ 中的类变量是如何发生的?


我有个问题。我目前正在用 C++ 编写一个小例子,无法弄清楚解释。这是我的问题:

#include <iostream>
using namespace std;

class X{
int& i ;  /* int i; */

public :
X(int k=100):i(k){ }



X(`const` X& x):i(x.i){}
void setI(int k){i=k;}
int getI(){cout <<"adresse: "<< &i << " Contenue: "<<i<<endl ; return i;}
};

int main(){
int i =7;

X a(i);
a.getI();

a.setI(5);

a.getI();

cout << "the value of i is: " << i << endl;

X b(a);
b.getI();
cout << "the value of i is: " << i << endl;

X c; …
Run Code Online (Sandbox Code Playgroud)

c++ reference class class-variables member-variables

0
推荐指数
1
解决办法
33
查看次数

Python 和变量作用域

所以我最近刚接触 Python,但我似乎能够编写一些东西并让它工作。然而,我一直在尝试扩展我对语言中事物如何工作的知识,而将这个简单的文件放在一起让我感到困惑。

class TestA:
    def __init__(self):
        self.varNum = 3

    def printNum(self):
        print(self.varNum)


class TestB:
    varNum = 0

    def __init__(self):
        varNum = 3

    def printNum(self):
        global varNum
        print(varNum)

a = TestA()
a.printNum()

b = TestB()
b.printNum()
Run Code Online (Sandbox Code Playgroud)

TestA将3 正确打印到屏幕的代码。然而,代码TestB却给了我NameError这样的说明:'varNum' is not defined。无论我是否有global varNum这条线,我都会收到该错误。

我想令我困惑的是我将该__init__函数视为类构造函数。当我使用 Java 或 C# 等语言进行编程时,我在构造函数之外声明了全局变量,以便它们的作用域是整个类。这不是 Python 中的东西吗?我编写的代码只是标记self.了所有内容,因为我只是想快速地将一些东西放在一起,但我现在正在尝试更多地了解该语言。self.Python 中创建类作用域变量的唯一方法是什么?或者还有其他方法吗?

谢谢你的时间 :)

python methods scope class class-variables

-1
推荐指数
1
解决办法
2906
查看次数

@和@@实例之间的区别

我用ruby制作了一个应用程序,并从红宝石教程中受益.所以,我遇到这个语法(@@vars),并想问它.(我认为它就像是C或二维数组中的指针)

@@vars@vars

ruby instance-variables class-variables

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