标签: class-attributes

属性更改时更新Ruby类属性哈希

我正在尝试编写一个类似于Rails AactiveRecord模型的Ruby类,其处理方式是:

class Person
  attr_accessor :name, :age

  # init with Person.new(:name => 'John', :age => 30)
  def initialize(attributes={})
    attributes.each { |key, val| send("#{key}=", val) if respond_to?("#{key}=") }
    @attributes = attributes
  end

  # read attributes
  def attributes
    @attributes
  end

  # update attributes
  def attributes=(attributes)
    attributes.each do |key, val| 
      if respond_to?("#{key}=")
        send("#{key}=", val) 
        @attributes[key] = name
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我的意思是,当我初始化类时,使用相关属性更新"属性"哈希:

>>> p = Person.new(:name => 'John', :age => 30)
>>> p.attributes
 => {:age=>30, :name=>"John"}
>>> p.attributes = { :name => 'charles' …
Run Code Online (Sandbox Code Playgroud)

ruby abstract-class metaprogramming class-attributes

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

如何从类属性中删除与模式匹配的类,但保留其他类?

我想从所有标签上的class属性中删除以"blue"结尾的类

示例HTML

<p class="text_blue happy">this is blue text</p>
<p class="text_red nothappy">this is red text</p>
<img class="img_blue nothappy" />
Run Code Online (Sandbox Code Playgroud)

这将为我提供所有以'blue'结尾的类的元素

$('[class$=blue]');
Run Code Online (Sandbox Code Playgroud)

如何从class属性中弹出这些匹配的类名?

jquery jquery-selectors class-attributes

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

python 类和类属性什么时候被垃圾收集?

class Member(object):
    def __init__(self, identifier):
        self.identifier = identifier
        print "Member __init__", self.identifier

    def __del__(self):
        print "Member __del__", self.identifier
        with open("/home/might/" + self.identifier, "w") as outF:
            outF.write(self.identifier)

class WithMembers(object):
    def __init__(self):
        print "WithMembers __init__"
        print WithMembers.classMem
        self.instanceMem = Member("instance mem")

    def __del__(self):
        print "WithMembers __del__"

    classMem = Member("class mem")

if __name__ == "__main__":
    print "main"
    WithMembers()
    #del WithMembers.classMem       # "Member __del__ class mem" before "end"
    #del WithMembers                # "Member __del__ class mem" after "end"
    print "end"
Run Code Online (Sandbox Code Playgroud)

上面的代码在 Hidden.py 中,运行python Hidden.py …

python garbage-collection class class-attributes class-attribute

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

Python:如何模拟类属性初始化函数

我想模拟一个用于初始化类级(非实例)属性的模块级函数.这是一个简化的例子:

# a.py    
def fn(): 
    return 'asdf'

class C:
    cls_var = fn()
Run Code Online (Sandbox Code Playgroud)

这是一个试图模拟a.fn()的单元测试:

# test_a.py 
import unittest, mock
import a

class TestStuff(unittest.TestCase):
    # we want to mock a.fn so that the class variable
    # C.cls_var gets assigned the output of our mock

    @mock.patch('a.fn', return_value='1234')
    def test_mock_fn(self, mocked_fn):
        print mocked_fn(), " -- as expected, prints '1234'"
        self.assertEqual('1234', a.C.cls_var) # fails! C.cls_var is 'asdf'
Run Code Online (Sandbox Code Playgroud)

我相信问题是在哪里修补,但我已尝试导入两个变种没有运气.我甚至尝试将import语句移动到test_mock_fn()中,以便在aC进入作用域之前,模拟的a.fn()将"存在" - nope仍然失败.

任何见解将不胜感激!

python static-members class-attributes python-mock

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

使用模板字符串和&amp;&amp;运算符反应条件类名

关于StackOverflow的许多问题都涉及到将条件类名应用于React组件。但是,对于这种特殊情况,我还没有一个好的答案:

我有一个基本的div,我想有条件地应用“ is-required”类。这是我的方法:

<div className={`some-class ${isRequired && 'is-required'}`}>
Run Code Online (Sandbox Code Playgroud)

这里的主要问题是,当isRequired为false时,我编译的HTML代码最终看起来像这样:

<div class='some-class false'>
Run Code Online (Sandbox Code Playgroud)

显然,我可以使用像这样的三元运算符,所以我可以返回一个空字符串:

<div className={`some-class ${isRequired ? 'is-required' : ''}`}>
Run Code Online (Sandbox Code Playgroud)

但是然后在已编译的HTML代码中,该类中包含了这个额外的随机空间,这不会引起任何渲染问题,但是我仍然不喜欢它:

<div class='some-class '>
Run Code Online (Sandbox Code Playgroud)

即便如此,我也可以删除“ someClass”之后的空格,并在“ isRequired”之前包含该空格,但是现在它更难阅读且感觉有点笨拙:

<div className={`some-class${isRequired ? ' is-required' : ''}`}>
Run Code Online (Sandbox Code Playgroud)

我听说过诸如类名之类的实用程序,但是我正在寻找一种不需要任何其他软件包的简单解决方案。

这里推荐的方法是什么?

javascript class-attributes reactjs template-strings

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

一个文档类属性如何使用Doxygen?

我正在尝试使用Doxygen记录类属性.目前,受保护的属性显示在特定类的页面顶部的列表中.我想为他们解释一下.

我已尝试@param [name] [description]在类的开头上方和属性声明的正上方使用它们.我甚至尝试将它们放入我的构造函数类的docblock中,它就破坏了它.

有什么东西我只是缺少?

- 洛根

php doxygen class-attributes

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

Perl类的属性组成?

假设我有多个角色,每个角色定义一组项目:

package A;
use Moose::Role;
sub items () { qw/apple orange/ }

package B;
use Moose::Role;
with 'A';
sub items () { qw/watermelon/ }

package C;
use Moose::Role;
sub items () { qw/banana/ }
Run Code Online (Sandbox Code Playgroud)

假设我在另一个类中使用它们,我想收集所有这些项目:

package Foo;
use Moose;
with qw(B C);

sub do_something {
    my $self = shift;
    my @items = ???;   # How can I get apple, orange, watermelon, banana here?
    ....
}
Run Code Online (Sandbox Code Playgroud)

一种可能的解决方案是采用MooseX :: ComposedBehavior,但是它的POD说(当然在编写时)它的API"不太稳定",而且"当前的实现是一种破解,应该被替换通过更健壮的一个".因此,我正在调查这是否可以在不依赖于这种"黑客"的情况下完成.

警告:如果您将来阅读此内容,请查看MooseX :: ComposedBehavior的POD (当前版本:0.003),因为它可能在平均时间内发生了变化.事情变化很快.CPAN作者发布了新版本.目前"不太稳定"的东西可能在未来变得更加稳定.甚至可能还有其他模块.自行检查.

理想情况下应该有类似的东西:my @items …

perl moose composition collect class-attributes

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

"衍生字段"/"来自计算的类属性"的Python范例

我有一个课程,比方说,计算一个人的保险风险,并在计算过程中计算一些其他变量.我稍后需要访问风险和其他变量.

class InsuranceRiskModel:

    self.risk = None
    self.other_var = None
    ...

    def get_risk():
        # do a bunch of calculations, 
        # which in the meantime fills out a bunch of other vars
        self.other_var = 5
        self.risk = 6
        return self.risk

    def get_other_var():
        # risk hasn't been calculated
        if not self.risk:
            raise NotYetCalculatedError("Not yet calculated!")
        return self.other_var
Run Code Online (Sandbox Code Playgroud)

现在我做的其他一些功能:

r = InsuranceRiskModel(person)
risk = r.get_risk()
other_var = r.get_other_var()
Run Code Online (Sandbox Code Playgroud)

这是我想要的那种程序的合法结构吗?只是抛出一个尚未运行的计算异常,以防止获取虚假值?

python oop attributes properties class-attributes

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

'System.Guid'不是属性类

我正在使用基于.net 4.5的Visual Studio 2013创建一个新的dll应用程序.尝试Guid在我的类上定义属性时,如下所示:

[Guid("4245366B-0484-4A41-A2E8-C7D9FC3A4ED7")]
Run Code Online (Sandbox Code Playgroud)

编译器给我错误

'System.Guid'不是属性类.

知道缺少什么吗?

c# .net-4.0 class-attributes .net-4.5 visual-studio-2013

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

类属性依赖于其他类属性

我想创建一个类属性,它依赖于另一个类属性(我告诉属性,而不是实例属性)。当此类属性是字符串时,如本主题所示,建议的解决方案

class A:
    foo = "foo"
    bar = foo[::-1]

print(A.bar)
Run Code Online (Sandbox Code Playgroud)

工作正常。但是,当类属性是列表或元组时,就像我的例子一样,以下代码不起作用......

x=tuple('nice cup of tea')

class A:
  remove = ('c','o','a',' ')
  remains = tuple(c for c in x if not c in remove)

print(A.remains)
Run Code Online (Sandbox Code Playgroud)

增加

Traceback (most recent call last):
  File "[***.py]", line 3, in <module>
    class A:
  File "[***.py]", line 5, in A
    remains = tuple(c for c in x if not c in remove)
  File "[***.py]", line 5, in <genexpr>
    remains = tuple(c for …
Run Code Online (Sandbox Code Playgroud)

python class-attributes

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