我有一个包含多个字典变量的类。有没有办法设置类变量的字典参数,其中变量名在函数中作为字符串传递?
<?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] 。有没有办法做到这一点?
我正在完成基础编程课程,但我无法理解类变量和实例变量(静态和非静态)之间的区别。我需要在代码中确定两者之间的区别
\n\nClass StudentDetails\n{\nInt rollNumber;\nString studentName;\n}\nStudentDetails firststudent= StudentDetails (19236, \xe2\x80\x9dThomas\xe2\x80\x9d);\nRun Code Online (Sandbox Code Playgroud)\n\n我相信 rollNumber、studentName、19236 和“Thomas”都是实例变量,firststudent 是类变量。
\n\n任何有关这方面的帮助将不胜感激,因为课程材料不是很有帮助。
\n
我有个问题。我目前正在用 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) 所以我最近刚接触 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 中创建类作用域变量的唯一方法是什么?或者还有其他方法吗?
谢谢你的时间 :)
我用ruby制作了一个应用程序,并从红宝石教程中受益.所以,我遇到这个语法(@@vars),并想问它.(我认为它就像是C或二维数组中的指针)
@@vars 和 @vars