问题标签 [class-instance-variables]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1025 浏览

python - 在 Python 2.7 中保存带有嵌套类实例的字典

我试图让这个尽可能简单。基本上我希望将数据保存到一个文件中,然后检索它,以便 questor.py 工作并且可以“记住”它曾经在你的机器上教过的所有内容。原始代码可在网络上获得,网址为http://www.strout.net/info/coding/python/questor.py 如果我没看错代码,您最终会得到一个类似于{key:{key:{key:class instance},class instance},class instance}. (粗略估算)

请忽略未捕获的方法 Save,一旦我弄清楚如何在不丢失任何嵌入实例的情况下腌制字典,我就正在努力解决这个问题。

以下是我尝试通过pickler保存字典的尝试。一些代码未完成,但你应该能够了解我想要做什么。到目前为止,我所能做的就是检索最后一个问题/答案集。我的泡菜没有保存嵌入的实例,或者当我保存泡菜时它们实际上并不存在。我尽可能地遵循意大利面条线,但似乎无法弄清楚如何设置一种保存到文件而不丢失任何内容的方法。此外,我的文件不必是 .txt 最初我打算将 .data 用于泡菜。

0 投票
6 回答
3512 浏览

c++ - 使用类实例的指针进行初始化是 C++ 中唯一的一种吗?

我们都知道,在 C++ 中定义新实例的最简单方法是下一个:

但是这种方法很糟糕,更高级的人使用智能指针,例如:shared_ptrunique_ptr...但是如果查看他们的来源,您可能会发现 smart_pointers 使用指针来创建新实例,而不是引用。

我也知道,使用指针不仅对 C++ 中的干净源代码(设计规则)不利,而且指针也会分配新内存,因为任何指针都是一种void*类型。正确的大小取决于 CPU 架构,但对于示例,让我们以 x86 为例,它拥有 4 个字节。

使用起来比使用引用要昂贵得多,引用&不需要为它们分配任何内存,这就是为什么在 C++ 自定义方法中使用引用要好得多。

所以告诉你所有这些信息,我想知道:

是否可以在 C++ 中使用引用定义新实例?如果不是,那为什么?

0 投票
3 回答
555 浏览

java - 蚀。当第二个读取前一个的静态字段时,运行两个不同的电源

我在eclipse中有一个Java项目,分为两部分;两个不同的主类基本上运行两个不同的线程。一个包含加载、初始化和调试显示过程,这些过程非常缓慢。同时,另一个操作初始化的数据。为了在第二部分中检索信息,第一部分将所有引用“保存”在包含类实例的静态映射中。

是否存在只运行第一部分一次,然后再编译和运行第二部分的方法?我尝试只设置两个不同的控制台并在不同时间按下运行按钮,但是当第二个运行时,第一个类的静态字段看起来不存在。

我现在只在第二部分工作,所以我需要多次测试和启动它。我非常感谢帮助节省大量时间浪费在始终初始化相同的东西上。

ps:如果我同时运行这两个部分,一切都很好。提前感谢卢卡

感谢重播(Multithreader,Stephen C),我试图让问题更清楚,并询问如何解决它,因为我的解决方案看起来不是最好的......

编辑1:“第一部分”初始化程序,然后运行一个定期更新的简单GUI。所以只要它出现了,我们就不应该关心如何管理用户的输入和输出

编辑 2:“第二部分”从前面读取信息并将字符串发送回 GUI 以进行调试。

编辑 3:我对项目的形状没有特定的限制,所以如果有更好的解决方案,我可以改变结构。以及运行它的方式。

更远的问题1:有可能在eclipse中只编译项目的一部分,而它一起运行?我的意思是,如果有两个线程正在运行,我可以停止一个,重新编译它并以一种可以看到从第一个线程创建的实例永不停止的方式再次运行它吗?基本上我需要引用内存中加载的同一个静态变量,如果它存在的话。

更进一步的问题 2:或者更幸运的是,确实存在一种方法来存储和加载 Java 类的文件实例,避免从草图中写入从/到 txt 文件的映射机制?

0 投票
1 回答
165 浏览

python - python how to save new objects into a list without duplication

High-level picture of my program

  • purpose: parse an XML file and save text into similar python objects
  • problem: Every time I create a new python object and append it to a list, instead of creating a new object it seems to append a reference to the previous objects.

Summary of what my intended structure should be:

list of applications that each contains a list of connections

so thats a summary of what it should do... so here is my main function:

How I know there is a memory problem:

  • When I change one thing in one list of connections that belong to a particular application, the connections in another application will also change.
  • I printed out the memory locations for the connections and found that there are duplicate references (see memory prints)

Memory print outs

  • when I printed out application locations I got the following (its not pretty, but you can see that at least the addresses are different):

generator_libraries.data_extraction.extraction.Application_XML instance at 0x15a07e8 - memory location = 22677480 generator_libraries.data_extraction.extraction.Application_XML instance at 0x15a0758 - memory location = 22677336 generator_libraries.data_extraction.extraction.Application_XML instance at 0x15a0830 - memory location = 22677552 generator_libraries.data_extraction.extraction.Application_XML instance at 0x15a0878 - memory location = 22677624 generator_libraries.data_extraction.extraction.Application_XML instance at 0x15a08c0 - memory location = 22677696 generator_libraries.data_extraction.extraction.Application_XML instance at 0x15a0908 - memory location = 22677768 generator_libraries.data_extraction.extraction.Application_XML instance at 0x15a0950 - memory location = 22677840 generator_libraries.data_extraction.extraction.Application_XML instance at 0x15a0998 - memory location = 22677912 generator_libraries.data_extraction.extraction.Application_XML instance at 0x15a09e0 - memory location = 22677984 generator_libraries.data_extraction.extraction.Application_XML instance at 0x15a0a28 - memory location = 22678056

  • when I printed out connection locations for 3 different applications I got the following (you can see the duplication among addresses):

    • app1::
    • memory location = 22721168
    • memory location = 22721240
    • memory location = 22721024
    • memory location = 22721600
    • memory location = 22721672

    • app2:

    • memory location = 22721240
    • memory location = 22721672
    • memory location = 22721600
    • memory location = 22721168
    • memory location = 22722104
    • memory location = 22722176

conclusions from memory analysis It seems that every time I create a new connection object and append it to my "connections" list, instead of creating a new object, it takes the memory reference from my previous objects.

A more detailed view of the problematic function's code

A class that does the same thing... but works

If it is any help, here is the connection class:

Final Words

I have tried nearly every trick in the book in terms of alternate ways of creating the objects, destroying them after I make them... but nothing has helped yet. I feel that there may be an essential python memory concept behind the answer... but after all my searching online, nothing has shed any light onto the answer.

Please, if you can help that would be awesome!!! Thanks :)

0 投票
4 回答
276 浏览

ruby - 为什么我的实例变量不存在于 ruby​​ 中同一类的方法中?

我正在做 ruby​​ koans,我在 DiceSet 项目中。我已经创建了 DiceSet 类,但我的实例变量似乎并没有像我想象的那样与实例保持一致。我的代码是

公案然后使用我的 DiceSet 类

我将 puts 命令放在那里以跟踪 @values 实例变量发生的事情,只有第一个 puts @values.class 说它是一个 Array 类。所有其他人都返回 NilClass。我是否错误地使用了实例变量,或者我还缺少什么?实例变量在方法调用后会被释放吗?

编辑:我的班级现在可以正常工作,因为我已将 @values = [] 放入 roll 方法中,如下所示。我现在唯一的问题是,为什么当我将 @values = [] 放在初始化方法中时,roll 方法认为 @values 是 NilClass 而不是数组

0 投票
0 回答
146 浏览

ruby-on-rails - Ruby/Rails:试图发明一种继承的资源 gem。mixin中的类实例变量

我想从很多类似的代码中干燥我的视图和控制器。我想出于教育目的自己做这件事,我知道 InheritedResourse gem。到目前为止,我写道:

只有两个动作,但你明白了:将任何模型抽象为“资源”,设置模型字段列表(或动态获取),就是这样。

首先,我认为我需要一个类实例变量,而不是@@instance_resource_name(类变量)。我是正确的?

...但是,这不是主要问题。我认为将这种代码包装在 mixin 中很酷。因为在我的示例中它是 Admin::ResourceController,但我也可以有一个 User::ResourceController 或其他东西。好的,我把它包装在一个mixin中。为了可用性,我想actions only: [:index, :show]在部分中调用类似 in controller 的东西before_filter,例如,我放 的地方。这一段代码是怎么调用的?类实例?好的,示例:

为了测试,我创建了这个小控制器:

所以,当我调用 hello 方法(它只做self.class.action_list)时,我想看到任何东西。我在 mixin 和类中设置类实例变量 - 硬编码和通过 mixin 中定义的方法。但它是零!我想你明白了,我想要达到的目标。如何实现?

0 投票
1 回答
55 浏览

php - 无论如何要访问被孩子覆盖的父母的属性?

有什么办法可以访问被孩子覆盖的父母价值观吗?

parent::$prop: 期望是静态的。和同样的:self::$prop

0 投票
2 回答
101 浏览

c# - 如何在 C# 的方法调用中传递对象实例?

我有一个 Club 类,它有一个列表 _list 作为参数,而“Player”是另一个类......我有这个添加俱乐部成员的方法,它是这样实现的:

现在,当我在主程序中执行此操作时:

它抛出一个异常,指出对象引用未设置为对象的实例。

0 投票
4 回答
540 浏览

ruby - 如何拒绝在 Ruby 中创建实例变量

我想拒绝在 Ruby 中创建实例变量,以防止“错误地”创建无人值守的变量。

0 投票
4 回答
646 浏览

java - 类实例与静态方法的关系

类实例(例如由静态/最终声明的变量)和静态方法(例如类方法)之间是否有任何特殊关系?

我希望你明白我的意思。