我正在尝试编写一个类似于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) 我想从所有标签上的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属性中弹出这些匹配的类名?
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
我想模拟一个用于初始化类级(非实例)属性的模块级函数.这是一个简化的例子:
# 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仍然失败.
任何见解将不胜感激!
关于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)
我听说过诸如类名之类的实用程序,但是我正在寻找一种不需要任何其他软件包的简单解决方案。
这里推荐的方法是什么?
我正在尝试使用Doxygen记录类属性.目前,受保护的属性显示在特定类的页面顶部的列表中.我想为他们解释一下.
我已尝试@param [name] [description]在类的开头上方和属性声明的正上方使用它们.我甚至尝试将它们放入我的构造函数类的docblock中,它就破坏了它.
有什么东西我只是缺少?
- 洛根
假设我有多个角色,每个角色定义一组项目:
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 …
我有一个课程,比方说,计算一个人的保险风险,并在计算过程中计算一些其他变量.我稍后需要访问风险和其他变量.
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)
这是我想要的那种程序的合法结构吗?只是抛出一个尚未运行的计算异常,以防止获取虚假值?
我正在使用基于.net 4.5的Visual Studio 2013创建一个新的dll应用程序.尝试Guid在我的类上定义属性时,如下所示:
[Guid("4245366B-0484-4A41-A2E8-C7D9FC3A4ED7")]
Run Code Online (Sandbox Code Playgroud)
编译器给我错误
'System.Guid'不是属性类.
知道缺少什么吗?
我想创建一个类属性,它依赖于另一个类属性(我告诉类属性,而不是实例属性)。当此类属性是字符串时,如本主题所示,建议的解决方案
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) class-attributes ×10
python ×4
.net-4.0 ×1
.net-4.5 ×1
attributes ×1
c# ×1
class ×1
collect ×1
composition ×1
doxygen ×1
javascript ×1
jquery ×1
moose ×1
oop ×1
perl ×1
php ×1
properties ×1
python-mock ×1
reactjs ×1
ruby ×1