标签: instance

有没有办法让静态方法访问类的所有非静态实例?

这可能是一个愚蠢的问题,但无论如何我都会问它......我正在用C#.NET编程.我有一个包含非静态实例EventHandler的类.是否可以为静态方法中存在的类的每个实例触发该EventHandler?我知道这是一个很长的镜头!

c# methods static instance non-static

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

C++:是否可以在构造函数完成之前调用对象的函数?

在C++中,是否可以在该实例的构造函数完成之前调用实例的函数?

例如,如果A的构造函数实例化B,B的构造函数调用A的一个函数.

c++ constructor function instance

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

C++实例VS指针VS引用

我有一个程序可以创建我自己的Class的许多实例.然后我操作它们:读取,更改,将它们传递给某些第三方方法等.

有三个问题.

  1. 我是否存储实例向量或指针向量?为什么?

  2. 如果我不希望做我传递给函数的一个实例或指向它改变一个实例?为什么?

  3. 如果我不希望改变的情况下,我通过指针或引用?为什么?

提前致谢!

类示例:

class Player {
    public:
        static const char               width = 35;
        static const char               height = 5;
        static const char               speed = 15;

        int                             socketFD;
        float                           xMin;
        float                           xMax;

        char                            status;
        float                           x;
        float                           y;
        char                            direction;

                                        Player ( int );
        void                            Reset();
        void                            Move();
        void                            SetHost();
        void                            SetClient();

    private:
        void                            EscapeCheck();
};
Run Code Online (Sandbox Code Playgroud)

c++ pointers reference instance

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

静态块初始化

这是一段Java代码:

static {        
    ture = 9;       
}
static int ture;
{ // instance block 
    System.out.println(":"+ture+":");           
}
Run Code Online (Sandbox Code Playgroud)

它是如何编译的?初始化后已执行变量'ture'的声明.据我所知,静态块和字段按照它们出现的顺序执行.

现在为什么实例块中的值9已被打印3次?顺便说一下,类的实例已经创建了3次.这不是作业,我正在学习Java认证.

java static instance

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

python赋值给循环中的元素列表

这是一个有效的python行为吗?我认为最终结果应该是[0,0,0]并且id()函数应该在每次迭代时返回相同的值.如何使它成为pythonic,而不是使用枚举或范围(len(bar))?

bar = [1,2,3]
print bar
for foo in bar:
    print id (foo)
    foo=0
    print id(foo)
print bar
Run Code Online (Sandbox Code Playgroud)

输出:

[1, 2, 3]
5169664
5169676
5169652
5169676
5169640
5169676
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

python loops list object instance

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

从元类设置实例变量

给定一个元类或更简单的,type()最后一个参数代表类dict,它是一个负责类变量的类.我想知道,有没有办法从元类中设置实例变量?

我使用元类的原因是我需要收集在类创建时定义的一些变量并处理它们.但是,这个处理的结果需要附加到类的每个实例,而不是类本身,因为结果将是一个列表,它将从一个类的实例到另一个实例不同.

我将提供一个示例,以便更容易关注我.


我有一个Model类,定义如下:

class Model(object):
    __metaclass__ = ModelType

    has_many = None

    def __init__(self, **kwargs):
        self._fields = kwargs
Run Code Online (Sandbox Code Playgroud)

本has_many 类变量在类定义的任何模型有人觉得有必要填写.在__init__(),我只是将模型实例化中提供的关键字分配给实例变量_fields.

然后我有了ModelType元类:

class ModelType(type):
    def __new__(cls, name, bases, dct):
        if 'has_many' in dct:
            dct['_restricted_fields'].append([has-many-model-name])
Run Code Online (Sandbox Code Playgroud)

我在这里需要做的非常简单.我检查是否有人在他的自定义模型类上定义了has_many 类变量,然后将变量的内容添加到受限字段列表中.

现在是重要的一部分.当实例化的模型,我需要_fields待由两者的关键字用于实例化模型参数和限制字段,如在元类处理.如果_fields是类中的类变量,这将非常容易Model,但由于它是一个实例变量,我不知道如何将限制字段添加到它.


话虽如此,有没有办法实现这一目标?或者有更好的方法来处理这个问题吗?(我想只使用一个元类并_restricted_fields在模型上设置一个类变量,然后在类中使用这个变量__init__()将受限字段添加到普通字段中,但很快模型类就会混杂代码,在我看来,应该在代码的另一部分休息).

python oop metaclass class instance

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

如何用泛型类类型编写java方法?

我想写一个泛型方法(使用泛型或param)

这将取代这两个电话:

private ServerEvent filterEvents() {
    return argThat(new ArgumentMatcher<ServerEvent>() {
        @Override
        public boolean matches(Object argument) {
            return argument instanceof Type1;
        }
    });

private ServerEvent filterEvents() {
    return argThat(new ArgumentMatcher<ServerEvent>() {
        @Override
        public boolean matches(Object argument) {
            return argument instanceof Type2;
        }
    });
Run Code Online (Sandbox Code Playgroud)

我试过这个,但得到了编译错误:

private <T> ServerEvent filterEvents() {
    return argThat(new ArgumentMatcher<ServerEvent>() {
        @Override
        public boolean matches(Object argument) {
            return argument instanceof T;
        }
    });
Run Code Online (Sandbox Code Playgroud)

更新:

我也尝试了这个,但仍然有编译错误:

    verify(loggerUtilsWrapper).writeEvent(filterEvents(MatchNotFoundEvent.class));


private ServerEvent filterEvents(final Class<MatcherEvent> eventType) {
    return argThat(new ArgumentMatcher<ServerEvent>() {
        @Override
        public boolean …
Run Code Online (Sandbox Code Playgroud)

java generics types instance

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

使用Haskell修改数字类型

我正在研究一个小型符号库,用Haskell执行一些计算.

为了表示符号操作,我创建了这种数据类型:

data MathExpress =                        -- A math expression
       MathDouble Double                  -- Represent a number      
     | MathAdd MathExpress MathExpress    -- Add 2 expressions 
     | MathSoust MathExpress MathExpress  -- Subtract 2 expressions
     | ...
Run Code Online (Sandbox Code Playgroud)

我设法创建一个Num实例,以便能够使用运算符+和-我的类型MathExpress.

instance Num MathExpress where
  (+) (expa) (expb)  = MathAdd expa expb
  (-) (expa) (expb)  = MathSoust expa expb
  ...
Run Code Online (Sandbox Code Playgroud)

当我写:

( MathExpress expression ) * MathDouble 2.0
Run Code Online (Sandbox Code Playgroud)

它的工作原理!

现在,我希望能够使用+和-数字(Double或Int)编写更简单:

( …
Run Code Online (Sandbox Code Playgroud)

haskell instance ghc

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

实例化有什么区别?

假设我们有一个类World,我们已经声明了dreamWorld该类的实例.情况1如何与案例2不同,除了它的一条线更短?在第二种情况下实例化实际上有什么区别?我的意思是,dreamWorld在这两种情况下,afterall 都是一样的,对吧?

案例1:

void changeWorld(World outerWorld) {
    World dreamWorld;

    dreamWorld = outerWorld;
}
Run Code Online (Sandbox Code Playgroud)

案例2:

void changeWorld(World outerWorld) {
    World dreamWorld;

    dreamWorld = new World();
    dreamWorld = outerWorld;
}
Run Code Online (Sandbox Code Playgroud)

where outerWorld是World在别处创建的类的对象,比如说,作为方法参数提供(我不确定它是如何提供的重要).

PS 谢谢你所有的提示和有用的回复,伙计们,对不起我的延迟感谢(我花了很多时间阅读一些我觉得有必要完全理解你的回复的文献).

java instance

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

函数引用其他函数C#创建的实例

我有一个可能很愚蠢的问题,但我是C#的新手,所以请原谅我的傲慢.我想知道函数是否有可能引用一个由另一个函数创建的实例.

我包含一个示例代码来说明我的意思:

class Program
{
    static void Main(string[] args)
    {
        Instantiator.Instantiate();
        Referent.Refer(instance);
        Console.ReadLine();
    }
}

public class Instance
{
    public void OnInstantiated()
    {
        Console.WriteLine("I have been instantiated.");
    }
    public void OnReferred()
    {
        Console.WriteLine("I have been referred to.");
    }
}

public class Instantiator
{
    public static void Instantiate()
    {
        Instance instance = new Instance();
        instance.OnInstantiated();
    }
}

public class Referent
{
    public static void Refer(Instance instance)
    {
        if(instance != null)
        {
            instance.OnReferred();
        }
        else
        {
            Console.WriteLine("No instance to refer to.");
        } …
Run Code Online (Sandbox Code Playgroud)

c# instance

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