标签: instance

一个方法可以是同一个类的另一个方法的装饰器吗?

我有一个类在他们的函数上有一个沉闷的重复模式,我想把这个模式变成一个装饰器.但问题是这个装饰器必须访问当前实例的一些属性,所以我想把它变成这个类中的方法.我遇到了一些问题.

所以,这与我想要的类似:

class DullRepetitiveClass:
    def __init__(self, nicevariable):
        self.nicevariable = nicevariable

    def mydecorator(self, myfunction):
        def call(*args, **kwargs):
            print "Hi! The value of nicevariable is %s"%(self.nicevariable,)
            return myfunction(*args, **kwargs)
        return call

    @mydecorator            #Here, comment (1) below.
    def somemethod(self, x):
        return x + 1
Run Code Online (Sandbox Code Playgroud)

(1)这是问题所在.我想用这个DullRepetitiveClass.mydecorator方法来装饰somemethod方法.但我不知道如何使用当前实例中的方法作为装饰器.

有一个简单的方法吗?

编辑:好的,答案很明显.正如Sven所说,装饰器本身只是改变了方法.该方法本身应该处理与实例有关的所有事情:

def mydecorator(method):
    def call(self, *args, **kwargs):
        print "Hi! The value of nicevariable is %s"%(self.nicevariable,)
        return method(self, *args, **kwargs)
    return call


class DullRepetitiveClass:
    def __init__(self, nicevariable):
        self.nicevariable = nicevariable

    @mydecorator            
    def somemethod(self, x): …
Run Code Online (Sandbox Code Playgroud)

python decorator instance

21
推荐指数
1
解决办法
2844
查看次数

我应该使这个XmlSerializer静态吗?

我有一个XmlSerializer在其Read/WriteXml方法中使用的类.目前是Serializer private readonly.

public class Foo : IXmlSerializable
{
    private Bar _bar = new Bar();
    private readonly XmlSerializer serBar = new XmlSerializer (typeof (Bar));

    public void WriteXml (XmlWriter writer)
    {
        serBar.Serialize (writer, Bar);
    }
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我正在考虑private static改为使用Serializer ,因此所有Foos之间共享一个实例.这是个好主意,还是有可能存在问题?

c# static instance xml-serialization

20
推荐指数
3
解决办法
6651
查看次数

模块中的实例方法

请考虑以下代码:

module ModName
  def aux
    puts 'aux'
  end
end
Run Code Online (Sandbox Code Playgroud)

如果我们替换moduleclass,我们可以做到以下几点:

ModName.new.aux
Run Code Online (Sandbox Code Playgroud)

但是,模块不能被实例化.有没有办法aux在模块上调用方法?

ruby module instance

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

EC2服务器,大量微实例或更少的大型实例?

我想知道哪个会更好,在EC2上托管一个具有许多微实例的站点,或者更少的大型实例,例如m1.large.所有这些都将作为负载平衡器位于一个或几个更大的实例后面.我会说出我的理解是什么,如果我错了,任何知道更好的人都可以添加或纠正我

选择微实例的主要原因是成本.单个微型实例平均每小时0.02美元可以提供0.35ECU,而一个小型实例将以0.085美元提供1ECU.如果你进行$/ECU /小时的数学计算,微型实例的成本为0.057美元/ ECU /小时,而小型实例则为0.085美元/ ECU /小时.因此,对于相同的平均计算能力,选择100个微实例将比35个小实例便宜.

微实例的主要问题是性能波动较大,但是当你有很多实例时,我不确定这是不是一个问题.

那么有没有人有这样的设置和看到好处和缺点的经验?请告诉我,因为我正在尝试选择哪条路,谢谢!

PS:关于这个主题的文章,http://huanliu.wordpress.com/2010/09/10/amazon-ec2-micro-instances-deeper-dive/

amazon instance amazon-ec2 amazon-web-services

20
推荐指数
2
解决办法
6210
查看次数

方法对象与函数对象,Python类实例与类

我正在尝试验证实例属性和类属性之间的区别,如2012年11月1日的Python教程版本2.7.3,第9章:类,最后一行(源代码)所示:

实例对象的有效方法名称取决于其类.根据定义,作为函数对象的类的所有属性都定义其实例的相应方法.所以在我们的例子中,xf是一个有效的方法引用,因为MyClass.f是一个函数,但是xi不是,因为MyClass.i不是.但是xf与MyClass.f不同 - 它是一个方法对象,而不是一个函数对象.

我有这个:

class MyClass:    
   """A simple example class"""    
   i = 12345   
   def f():    
      return 'hello world'
Run Code Online (Sandbox Code Playgroud)

然后我这样做:

>>> x = MyClass()
>>> x.f
<bound method MyClass.f of <__main__.MyClass instance at 0x02BB8968>>
>>> MyClass.f
<unbound method MyClass.f>
>>> type(MyClass.f)
<type 'instancemethod'>
>>> type(x.f)
<type 'instancemethod'>
Run Code Online (Sandbox Code Playgroud)

需要注意的是这两种类型x.fMyClass.f为instancemethod.类型没有区别,但教程另有说法.有人可以澄清一下吗?

python methods class instance

20
推荐指数
2
解决办法
1万
查看次数

SQLAlchemy:分离对象的修改

我想使用orm在SQLAlchemy中复制模型实例(行).我的第一个想法是这样做:

i = session.query(Model)
session.expunge(i)

old_id = i.id
i.id = None
session.add(i)
session.flush()
print i.id #New ID
Run Code Online (Sandbox Code Playgroud)

然而,显然分离的对象仍然"记住"它具有的id,即使我在分离时将id设置为None.因此,session.flush()尝试执行UPDATE,将主键更改为null.

这是预期的行为吗?如何删除此属性的"内存",并在将重新添加到会话时将其作为新对象处理?一般来说,如何克隆SQLAlchemy模型实例?

python clone sqlalchemy instance duplicates

20
推荐指数
1
解决办法
8844
查看次数

Ruby on Rails - 从模型访问控制器变量

我试图访问在模型中的控制器中设置的实例变量.控制器是产品控制器,模型是产品型号.实例变量是另一个名为account的模型的实例.

实例变量是 @current_account

当我运行代码没有任何反应时,我没有收到错误.有谁知道在哪里可以找到关于模型中控制器中设置的访问实例变量的内容?

谢谢

EEF

ruby model ruby-on-rails instance

19
推荐指数
3
解决办法
3万
查看次数

如何获取实例给出实例的方法?

class MyClass:
    def myMethod(self):
        pass

myInstance = MyClass()

methodReference = myInstance.myMethod
Run Code Online (Sandbox Code Playgroud)

myInstance如果您现在只能访问,现在可以获得参考methodReference吗?

python methods class instance

19
推荐指数
2
解决办法
6942
查看次数

如何使用"instanceof"实现泛型的"equals"方法?

我有一个接受泛型类型的类,我想以equals一种非笨拙的方式覆盖该方法(即看起来很干净且代码量很少的东西,但对于一般的用例).

现在我有这样的事情:

public class SingularNode<T> {
    private T value;

    @SuppressWarnings("unchecked")
    @Override
    public boolean equals(Object other){
        if(other instanceof SingularNode<?>){
            if(((SingularNode<T>)other).value.equals(value)){
                return true;
            }
        }
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

我猜,这是非常有缺陷的 - 我正在SingularNode<T>other对象进行强制转换,这可能会引发错误.

另一件事是 - 当我这样做时,if(other instanceof SingularNode<?>)我实际上并没有检查正确的事情.我实际上想要检查类型T而不是类型?.每当我尝试?进入时T,我会得到一些错误:

无法对参数化类型执行instanceof检查SingularNode<T>.请改用表单SingularNode<?>,因为在运行时将删除其他泛型类型信息

我怎么能绕过这个?有办法T.class.isInstance(other);吗?

我想有一个非常难看的黑客解决方案是这样的:

@SuppressWarnings("unchecked")
public boolean isEqualTo(Class<?> c, Object obj){
    if(c.isInstance(obj) && c.isInstance(this)){
        if(((SingularNode<T>)obj).value.equals(value)){
            return true;
        }
    }
    return …
Run Code Online (Sandbox Code Playgroud)

java oop generics equals instance

19
推荐指数
2
解决办法
2万
查看次数

从字符串创建React类的实例

我有一个字符串,其中包含类的名称(这来自一个json文件).这个字符串告诉我的Template Class哪个布局/模板用于数据(也在json中).问题是我的布局没有显示.

Home.jsx:

//a template or layout.
var Home = React.createClass({
  render () {
    return (
    <div>Home layout</div>
    )
  }
});
Run Code Online (Sandbox Code Playgroud)

Template.jsx:

var Template = React.createClass({
  render: function() {
    var Tag = this.props.template; //this is the name of the class eg. 'Home'
    return (
        <Tag />
    );
  }
});
Run Code Online (Sandbox Code Playgroud)

我没有得到任何错误,但我也没有看到布局/ Home Class.我检查了props.template,这会记录正确的信息.此外,我可以在DOM中看到home元素.但它看起来像这样:

<div id='template-holder>
    <home></home>
</div>
Run Code Online (Sandbox Code Playgroud)

如果我将以下行更改为:

var Tag = Home;
//this works but it's not dynamic!
Run Code Online (Sandbox Code Playgroud)

任何想法,我如何解决这个问题?我确定它要么是简单的修复,要么是我做了一些愚蠢的事情.帮助将不胜感激.如果已经有人问过这个道歉(我找不到).

谢谢,Ewan

class dynamic instance reactjs

19
推荐指数
3
解决办法
2万
查看次数