10得票2回答
为什么在Ruby中使用类变量被认为是'code smell'(坏味道)?

根据Reek,创建类变量被认为是一种“代码异味”。这背后的解释是什么?

29得票6回答
在子类中强制实现类变量

我正在扩展Python的webapp2网络框架,使其具备一些缺失的功能(以便快速、简便地创建应用程序)。 其中一个要求是每个子类需要有一些特定的静态类变量。最好的实现方法是,在使用这些变量时,如果它们缺失,就抛出异常,还是有更好的方法? 示例(非真实代码): 子类:class Bar(F...

10得票2回答
防止/修改访问类变量

有没有一种方法可以像覆盖实例变量的__setattr__一样防止或更改Python中的类变量访问? 请注意,此问题的标题错误,实际上是指实例变量,而不是类变量。 基于阅读关于(明显)死亡陷阱__slots__的多篇帖子,我更喜欢不走这条路(而且我还没有足够的了解来知道它是否做到了我所要求的...

128得票4回答
在Ruby中创建模块变量

在 Ruby 中是否有创建类变量类似的模块变量的方法?我的意思是,它能够在不初始化模块实例的情况下被访问,但可以更改(与模块中的常量不同)。

8得票1回答
Rails中不是线程安全的例子

我看到过像这样的讨论Rails中线程安全的串,还有很多相关的网页。我相信大家都能背出什么是线程安全的,并给出哪些东西不是线程安全的“提示”(比如类变量!)。但我似乎找不到一个清晰、简单、完整的例子来说明在Rails中实际上哪些东西是不线程安全的。这让我怀疑是否有人真正理解它。 如果有人能证明...

219得票8回答
Ruby类实例变量与类变量

我读了Ruby实例变量何时设置?但是我对何时使用类实例变量有两种想法。 类变量由类的所有对象共享,实例变量属于一个对象。如果我们有类变量,就没有太多余地使用类实例变量了。 有人能解释一下这两者之间的区别以及何时使用它们吗? 这里有一个代码示例: class S @@k = 23 ...

14得票2回答
为什么应该避免在Ruby中使用@@类变量?

我知道有些人说在Ruby中应该避免使用类变量(例如@@class_var),而应该在类作用域中使用实例变量(例如@instance_var):def MyClass @@foo = 'bar' # Should not do this. @foo = 'bar' # Should d...

13得票1回答
在Ruby中,为什么在启动irb后,foo.nil?会显示未定义错误,@foo.nil?会返回"true",而@@wah.nil?又会再次出现错误?

在Ruby 1.8.7和1.9.2中相同:$ irb ruby-1.8.7-p302 > foo.nil? NameError: undefined local variable or method `foo' for #<Object:0x3794c> from ...

7得票1回答
Python类变量初始化

我希望将一些关于类的信息存储为类(静态)变量。然而,我无法弄清楚这些变量是如何初始化的。以下是一个基本的、愚蠢的例子: class A(object): clsVar = 'a' @classmethod def clsMeth(cls): print...

7得票1回答
使用 `class_attribute` 和 `Hash` 的正确方式是什么?

Rails有一个类扩展叫做class_attribute,它允许类实例变量的继承。这对于不可变对象(例如String)有效,但对于可变对象无效。 class Base class_attribute :options self.options = {} end class SubC...