标签: static-variables

python 方法中的静态变量

在 Python 方法中,我希望有一个局部变量,其值在方法调用之间保持不变。

这个问题展示了如何在函数内声明此类“静态变量”(C++ 术语)。我尝试在实例方法中执行相同的操作,但失败了。

这是一个重现该问题的最小工作示例。您可以将其复制粘贴到解释器中。

class SomeClass(object):
    def some_method(self):
        if not hasattr(SomeClass.some_method, 'some_static_var'):
            SomeClass.some_method.some_static_var = 1  # breaks here

        for i in range(3):
            print SomeClass.some_method.some_static_var
            SomeClass.some_method.some_static_var += 1

if __name__ == '__main__':
    some_instance = SomeClass()
    some_instance.some_method()
Run Code Online (Sandbox Code Playgroud)

在标有“#在此中断”的行上,我得到:

AttributeError: 'instancemethod' object has no attribute 'some_static_var'

我意识到有一个简单的解决方法,我可以在其中创建 的some_static_var成员变量SomeClassSomeClass然而,该变量在方法之外确实没有用,所以如果可以的话,我更希望避免它弄乱命名空间。

python methods static static-variables

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

PyCharm 中的类型检查类静态变量

我在 PyCharm 项目中有以下 Python 代码:

class Category:
    text: str

a = Category()
a.text = 1.5454654  # where is the warning?
Run Code Online (Sandbox Code Playgroud)

当我尝试设置错误类型的属性时,编辑器应该显示警告。看看下面的设置:

PyCharm 设置配置的屏幕截图

python static-variables typechecking pycharm python-typing

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

我可以内联使用静态变量的函数吗?

我有这个代码:

// my.h

#ifndef MY_HEADER
#define MY_HEADER

int create_uid();

#endif
Run Code Online (Sandbox Code Playgroud)
// my.cpp

#include "my.h"

static int _next_uid = 0;

int create_uid()
{
    return _next_uid++;
}
Run Code Online (Sandbox Code Playgroud)

我想内联create_uid(),同时保持_next_uid变量对程序全局,以便变量是唯一的。

我的问题是:

  1. 我可以这样做吗?
  2. inlinerequire 语句_next_uid在编译单元之外是否可见?

注意:似乎并没有清楚地回答这些问题。

c++ static-variables inline-functions

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

拥有数百个只读静态变量是否会导致性能问题?

我正在开发一个新的应用程序,Asp.Net MVC project这次是为了更好地控制应用程序的静态内容,我计划将所有内容作为可重用属性存储在readonly static variables. 这些值在应用程序的整个生命周期中不会改变。

使用示例:

  • 我创建了一个类,将所有消息保存在静态变量中,这样如果我想更改默认保存消息,我可以从这里更改它,而无需更改项目中的每个事件。这还包括验证消息。(数量可能会快速增长,具体取决于项目的规模)

  • 其他用途:存储所有与应用程序相关的属性,例如版本、标题、密钥等等。我还计划存储按钮文本和其他 UI 控件相关的属性,以便可以轻松自定义它们,例如我不知道可能是 CSS 类。

  • 更不用说,除了上述之外,我还有许多静态类,例如数据访问助手和带有一些静态方法的实用函数。

示例类:

public static class Messages
    {
        public static class Response
        {
            public readonly static string SUCCESS = "Process completed successfully";
            public readonly static string FAILED = "Process failed";
            public readonly static string ERROR = "Some error occured";
            public readonly static string OPRNOTPERFORMED = "Operation aborted/failed for some unknown reason. Please contact your administrator";

            //LOGIN
            public readonly static string USERNOTFOUND = "Invalid username …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc web-applications static-variables readonly-variable

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

IIS托管的Web应用程序中的静态变量

如果我声明在IIS中托管的ASP.NET应用程序中实例化的类型中的静态字段是IIS使用的所有工作线程使用的相同变量(即相同的内存位置),那么会导致并发问题?

asp.net iis multithreading static-variables

4
推荐指数
1
解决办法
2658
查看次数

Java Field Hiding

我想知道在两个java类之间隐藏字段是什么意思,以及在结果输出方面运行代码时它意味着什么?

我有一个带有a protected static boolean field = false和子类的抽象类,它有一个具有相同名称但不是静态的布尔字段并设置为true.

如果我有这个代码:

Superclass d = new subclass();
Run Code Online (Sandbox Code Playgroud)

超类中的布尔字段和子类中的布尔字段的值是多少?子类字段是否保留为false上面的赋值后?

非常感谢

java field instance-variables static-variables member-hiding

4
推荐指数
2
解决办法
5822
查看次数

在PHP中静态使用静态常量中的类名

我将类名Car存储为常量中的静态变量.我想用这个常量来调用这个函数a.一种选择是使用中间变量$tmp.然后我可以打电话$tmp::a().有没有办法在一个声明中这样做?我的尝试如下.

class Car{
    public static function a(){
        return 'hi';
    }
}

class Constants{
    public static $use='Car';
}

$tmp=Constants::$use;

echo(${Constants::$use}::a());
Run Code Online (Sandbox Code Playgroud)

IDEOne链接

输出如下

PHP Notice:  Undefined variable: Car in /home/mU9w5e/prog.php on line 15
PHP Fatal error:  Class name must be a valid object or a string in /home/mU9w5e/prog.php on line 15
Run Code Online (Sandbox Code Playgroud)

php static-variables

4
推荐指数
1
解决办法
645
查看次数

PHP:在线程之间共享静态变量

我在PHP中的不同线程之间共享静态变量时遇到问题.简单来说,我想1.在一个线程中编写一个静态变量2.在其他线程中读取它并执行所需的过程并清理它.为了测试上面的要求,我在下面写了PHP脚本.

<?php

class ThreadDemo1 extends Thread
{
private $mode;  //to run 2 threads in different modes
private static $test;  //Static variable shared between threads

//Instance is created with different mode
function __construct($mode) {
    $this->mode = $mode;            
}

//Set the static variable using mode 'w'
function w_mode() {
   echo 'entered mode w_mode() funcion';
   echo "<br />";

   //Set shared variable to 0 from initial 100
   self::$test = 100;

   echo "Value of static variable : ".self::$test;
   echo "<br />";
   echo "<br />";

   //sleep …
Run Code Online (Sandbox Code Playgroud)

php multithreading static-variables

4
推荐指数
2
解决办法
2975
查看次数

将指针传递给C中的静态全局变量

将指向静态结构的指针传递给函数是否安全?

我有这样的事情:

mymodule.c:

static MYEVENT_STRUC_T event;
uint_32 _myRtos_set_event(MYEVENT_STRUCT_T* event_ptr, uint_32 mask);

uint_32 mymodule_set_event(uint_32 event_mask){   

    /* Kernel function */
    /* Defined outside mymodule.c,*/
    /* Is it safe to call it with &event?  */
    return _myRtos_set_event(&event, event_mask);

}
Run Code Online (Sandbox Code Playgroud)

c static-variables

4
推荐指数
1
解决办法
2948
查看次数

打印静态变量用于模板元编程

我有以下模板元编程实现的阶乘:

#include <iostream>

template <int n> struct factorial{
  static const int res = n*factorial<n-1>::res;
};

template <> struct factorial<0>{
  static const int res = 1;
};

int main(){
  std::cout << factorial<5>::res << '\n';
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,此代码成功编译并输出120.但是,出于纯粹自我享受的原因,我想改为使其编译,而是在编译器的错误消息中显示120.

是否有一个简单的语法错误我可以刻意进入我的代码,使其无法编译,但仍然在编译器错误消息中打印5 !,即120的值?

我预计答案可能依赖于编译器; 我目前正在使用Xcode Mac OSX附带的g ++,其中iirc是clang的前端.

c++ compiler-errors static-variables template-meta-programming

4
推荐指数
1
解决办法
613
查看次数