标签: instance

Python实例和属性:这是一个错误还是我完全错了?

假设你有这样的东西:

class intlist:
        def __init__(self,l = []):
                self.l = l
        def add(self,a):
                self.l.append(a)

def appender(a):
        obj = intlist()
        obj.add(a)
        print obj.l

if __name__ == "__main__":
        for i in range(5):
                appender(i)
Run Code Online (Sandbox Code Playgroud)

函数创建一个intlist实例,并在该新实例上调用该方法附加在实例属性l上.

为什么这段代码的输出是:

[0]

[0,1]

[0,1,2]

[0,1,2,3]

[0,1,2,3,4]

?如果我切换

obj = intlist()
Run Code Online (Sandbox Code Playgroud)

同

obj = intlist(l=[])
Run Code Online (Sandbox Code Playgroud)

我得到了所需的输出

[0]

[1]

[2]

[3]

[4]

为什么会这样?

谢谢

python attributes class instance

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

在Java对象中替换自己的实例

就我而言,实现者应该能够“更新”一个对象。

//creating an instance (follows the active record pattern)
    SameClass myObject = SameClass.find(123,params); 

//myObject gets replaced by the output of the web api inside, but it feels like an update for the implementator
    myObject.update("ask the web api to paint it black"); 
Run Code Online (Sandbox Code Playgroud)

但是,在类内部,我还没有弄清楚如何立即替换所有属性。这种方法行不通,但是也许还有其他机会可以解决它:

    public void update(String newParams) {
//Can't replace "this" (that call returns an instance of "SameClass")
       this = ConnectionFramework.getForObject(SameClass.class,"some url",newParams); 
    }
Run Code Online (Sandbox Code Playgroud)

实际上,“ ConnectionFramework”是适用于Android的Spring RestTemplate。未简化的版本是:

    public void update(HashMap<String,String> params) {
SameClassResponse response = restTemplate.getForObject(ENDPOINT+"/{id}.json",SameClassResponse.class, params);
    this = response.getSameClass(); …
Run Code Online (Sandbox Code Playgroud)

java instance-variables instance

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

Perl,perl构造函数中的@array

我写了perl类,但我不知道如何在我的$this变量中有一个数组或一个哈希?

我有一个pack.pm:

#!/usr/bin/perl -w
use strict;
use Parallel::ForkManager;
package Pack;

our $cgi = new CGI;

sub new {
    my ($classe, $nom, $nbports, $gio) = @_;

    my $this = {
    "nom"    => $nom,
    "nbports" => $nbports,
    "gio"   => $gio
    };

    bless($this, $classe);
    return $this;   
}
    ...
1;
Run Code Online (Sandbox Code Playgroud)

我想有一个@tab,我可以通过访问$this->tab,但我不想在arg中给它实例.
它在Perl中如何工作?

谢谢.

variables perl constructor instance

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

从实例调用静态函数

我试图__callStatic从其子类的成员调用静态魔术函数().问题是,它转向非静态__call.

<?php

ini_set("display_errors", true);

class a
{
    function __call($method, $params)
    {
        echo "instance";
    }

    static function __callStatic($method, $params)
    {
        echo "static";
    }
}

class b extends a
{
    function foo()
    {
        echo static::bar();
        // === echo self::bar();
        // === echo a::bar();
        // === echo b::bar();
    }
}

$b = new b();
echo phpversion()."<br />";
$b->foo();

?>
Run Code Online (Sandbox Code Playgroud)

输出:

5.3.6
instance
Run Code Online (Sandbox Code Playgroud)

如何让它显示"静态"?

php methods static instance

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

Ext JS 4 - 如何创建多个商店实例并分配给视图?(MVC)

如何创建商店的唯一实例并将其分配给视图(如果需要,我可以创建独特的视图和/或控制器)?

一个简单的用例 - 我想打开多个网格(相同类型),每个网格包含一个商店中的记录列表.每个网格都需要拥有自己的商店实例,因为它可以拥有自己的记录列表,它自己的过滤等等.

我尝试了这个,但它不起作用,我的网格不绘制:

 var theView = Ext.create('App.view.encounter.List');
    theView.title = 'WORC Encounters';
    var theStore=Ext.create('App.store.Encounters');
    theView.store=theStore;
    tabhost.add({title:'WORC',items:theView});

    var theView = Ext.create('App.view.encounter.List');
    theView.title = 'NC Encounters';
    var theStore2=Ext.create('App.store.Encounters');
    theView.store=theStore2;
    tabhost.add({title:'NC',items:theView});
Run Code Online (Sandbox Code Playgroud)

model-view-controller grid extjs instance

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

如何使用Visitor模式替换"instanceof"

我对访问者模式有点不友好,但我有一个需要访问者实现的任务(如果我想避免"instanceof"检查).

我有一个类,它是几个gwt元素的包装:Label,Panel,Widget(可以是复选框,列表框,文本框等).我使用数组作为UI的相似部分的集合.例如Label +复选框,Label +文本框; 标签+按钮等

一些元素以不同的方式构造(从例如Panel派生的另一个类的一部分).因此,我有两个相同的构造函数,但在一个地方使用重载方法.我可以合并这些构造函数并使用上面提到的方法中的"instanceof"检查元素.但我不喜欢这个解决方案,并希望使用访问者模式替换它.说实话,我不知道该怎么做,希望对你有所帮助.

这是我的一个例子:

public class MyWidgets {
    private String stringLabel;
    private Widget widget;
    private Panel panel;

    public MyWidgets(String stringLabel, Widget widget) {
      this.stringLabel = stringLabel;
      this.widget = widget;

      initPanel(stringLabel, widget);
    }

    public MyWidgets(ConstructedClass cs, Widget widget) {
       this.widget = widget;

       initPanel(cs, widget);
    }

    private initPanel(String label, Widget widget) {
      panel = SomeStaticUtilityClass.initPanel(new Label(label), widget);
    }

    private initPanel(ConstructedClass cs, Widget widget) {
      panel = SomeStaticUtilityClass(cs, widget);
    }
}
Run Code Online (Sandbox Code Playgroud)

像这样的东西(我试图让它最大化抽象,实际上它更难).

所以我有一个使用"instanceof"的解决方案:

private initPanel(Object object, Widget widget) {
  if(object …
Run Code Online (Sandbox Code Playgroud)

java polymorphism gwt instance

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

局部变量与实例变量

我一直在为使用XNA构建的游戏进行大量关于C#优化的研究,我仍然不太清楚局部变量是否是实例变量,在不断更新和使用时会提供更好的性能.

根据http://www.dotnetperls.com/optimization,您应该避免参数和局部变量,这意味着实例变量是性能方面的最佳选择.

但不久之前,我在另一篇StackOverflow帖子(我似乎无法找到它的位置)上读到,局部变量存储在访问速度快得多的内存中,并且每次设置实例变量时,在分配新值之前,必须将先前的值擦除为繁琐的额外步骤.

我知道在设计方面,它可能会破坏封装以在这种情况下使用实例变量,但我对性能非常好奇.目前在我的游戏中,我将局部变量传递给一个类中的7个方法中的3个,但我可以轻松地将变量提升为实例变量,并且能够完全避免参数传递和局部变量.

哪个更好?

.net c# optimization local instance

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

JavaFX2 FXML如何动态添加元素(例如Buttons)

所以,我想要做的是,使用fxml创建一个自定义元素,然后将该元素的几个实例添加到容器中,如GridPane."new"运算符对我不起作用,因为我想使用@fxml注释器来访问该元素.克隆会很好,但它不起作用.当在for()contruct中使用添加许多元素时,FXMLLoader非常慢.如果我可以写一个fxml parentnode的引用,它可以从控制器调用,那将是完美的.

对不起...这里伪...

public class Controller implements Initializable {

    @FXML
    private VBox stack;

    @FXML
    private Button button;

    @FXML
    private void Change(KeyEvent event) throws IOException {     
        for (int i=0; i<10; i++){
            stack.getChildren().add(button);   
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

将THE按钮添加到VBox是没有问题的.但是在for-contruct中(添加多于一个按钮)它失败了.我可以在for构造中使用new运算符,但我想知道,如果这是唯一的可能性.我认为必须有另一种方式,例如使用@FXML注释器"获取"按钮然后复制它.

instance building javafx-2 fxml

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

如何从Java中的另一个类获取类的特定实例?

我已经使用该main方法创建了以下类,该方法创建了新的实例Application和实例ApplicationModel,ApplicationView并ApplicationController为此特定Application.

public class Application
{

    // Variables

    private ApplicationSettings         settings;
    private ApplicationModel            model;
    private ApplicationView             view;
    private ApplicationController       controller;

    // Constructor

    public Application()
    {
        settings        = new ApplicationSettings();
        model           = new ApplicationModel();
        view            = new ApplicationView(model);
        controller      = new ApplicationController();
    }

    // Main method

    public static void main(String[] args)
    {
        Application application = new Application();
    }

    // Getters for settings, model, view, controller for instance of Application

} …
Run Code Online (Sandbox Code Playgroud)

java oop model-view-controller class instance

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

类#isInstance vs Class#isAssignableFrom

鉴于a Class<?> superType和a Object subInstance,它们之间有什么区别

superType.isInstance(subInstance)
Run Code Online (Sandbox Code Playgroud)

和

superType.isAssignableFrom(subInstance.getClass())
Run Code Online (Sandbox Code Playgroud)

(如果有的话)?

java class instance

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