标签: instantiation

为什么Class.newInstance()"邪恶"?

瑞安DELUCCHI这里的评论#3 汤姆Hawtin的回答是:

为什么Class.newInstance()"邪恶"?

这是为了响应代码示例:

// Avoid Class.newInstance, for it is evil.
Constructor<? extends Runnable> ctor = runClass.getConstructor();
Runnable doRun = ctor.newInstance();
Run Code Online (Sandbox Code Playgroud)

那么,为什么它是邪恶的?

java constructor runtime instantiation

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

使用反射在C#中创建没有默认构造函数的类型实例

以下面的课程为例:

class Sometype
{
    int someValue;

    public Sometype(int someValue)
    {
        this.someValue = someValue;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我想使用反射创建这种类型的实例:

Type t = typeof(Sometype);
object o = Activator.CreateInstance(t);
Run Code Online (Sandbox Code Playgroud)

通常这会起作用,但是由于SomeType没有定义无参数构造函数,调用Activator.CreateInstance将抛出类型异常,MissingMethodException并带有消息" 没有为此对象定义无参数构造函数. "是否还有另一种方法可以创建此类型的实例?将无参数构造函数添加到我的所有类中会有点麻烦.

c# reflection instantiation default-constructor

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

python是否具有Java Class.forName()的等价物?

我需要获取一个字符串参数,并在Python中创建该字符串中指定的类的对象.在Java中,我会使用Class.forName().newInstance().Python中有相应的东西吗?


谢谢你的回复.要回答那些想知道我在做什么的人:我想使用命令行参数作为类名,并实例化它.我实际上是在Jython中编程并实例化Java类,因此问题的Java-ness. getattr()效果很好.非常感谢.

python java class instantiation

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

base()和this()构造函数的最佳实践

在什么情况下我应该在做:base():this() 构造函数调用以下我的构造函数的括号内(甚至在代码的其他地方).这些什么时候称为良好做法,什么时候强制执行?

c# oop inheritance constructor instantiation

80
推荐指数
5
解决办法
7万
查看次数

实例初始化器与构造函数有何不同?

换句话说,为什么需要实例初始化器?在构造函数上编写实例初始化程序有什么区别或优势?

java instantiation

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

PHP类实例化.使用或不使用括号?

我一直认为 - 在没有构造函数参数的情况下 - 括号(花括号)在创建类实例时遵循类名,是可选的,并且您可以根据自己的想法包含或排除它们.

这两个陈述是平等的:

$foo = new bar;
$foo = new bar();
Run Code Online (Sandbox Code Playgroud)

我对吗?或者对我不知道的括号有一些意义吗?

我知道这听起来像一个RTM问题,但我一直在寻找(包括整个PHP OOP部分),我似乎无法找到一个直接的答案.

php oop class instantiation

70
推荐指数
2
解决办法
6082
查看次数

如何在Rails中从名称字符串实例化类?

我们如何从Ruby-on-Rails中的名称字符串中实例化类?

例如,我们在数据库中以"ClassName"或"my_super_class_name"的格式命名.

我们如何从中创建对象?

解:

正在寻找它,但没找到,所以在这里. Ruby-on-Rails API方法

name = "ClassName"
instance = name.constantize.new  
Run Code Online (Sandbox Code Playgroud)

它甚至可以不格式化,我们可以用户字符串方法.classify

name = "my_super_class"
instance = name.classify.constantize.new
Run Code Online (Sandbox Code Playgroud)

当然也许这不是'Rails方式',但它解决了它的目的.

string ruby-on-rails class instantiation ruby-on-rails-3

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

dict()和{}有什么区别?

所以我想说我想写一本字典.我们称之为d.但是有多种方法可以在Python中初始化字典!例如,我可以这样做:

d = {'hash': 'bang', 'slash': 'dot'}
Run Code Online (Sandbox Code Playgroud)

或者我可以这样做:

d = dict(hash='bang', slash='dot')
Run Code Online (Sandbox Code Playgroud)

或者,奇怪的是:

d = dict({'hash': 'bang', 'slash': 'dot'})
Run Code Online (Sandbox Code Playgroud)

或这个:

d = dict([['hash', 'bang'], ['slash', 'dot']])
Run Code Online (Sandbox Code Playgroud)

以及其他多种方式的dict()功能.显然,dict()提供的一件事是语法和初始化的灵活性.但这不是我要问的问题.

说我d只做一本空字典.当我做什么那张Python解释器的幕后d = {}d = dict()?它只是两种方式来做同样的事情?使用是否{}额外的电话dict()?是否有一个(甚至可以忽略不计)比另一个更多的开销?虽然这个问题真的完全不重要,但我很乐意回答这个好奇心.

python initialization instantiation

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

在C#中创建新对象时,{}是否像()一样?

我只是注意到在构造对象时使用{}而不是()给出相同的结果.

class Customer
{
    public string name;
    public string ID {get; set;}
}

static void Main()
{  
    Customer c1= new Customer{}; //Is this a constructor? 
    Customer c2= new Customer();

    //what is the concept behind the ability to assign values for properties 
    //and fields inside the {} and is not allowable to do it inside () 
    //without defining a constructor:

    Customer c3= new Customer{name= "John", ID="ABC"};
}
Run Code Online (Sandbox Code Playgroud)

是否{}()建立在C#中的新对象时?

.net c# instantiation

61
推荐指数
3
解决办法
4061
查看次数

有没有办法在不调用__init__的情况下实例化一个类?

有没有办法绕过__init__python中的类的构造函数?

例:

class A(object):    
    def __init__(self):
        print "FAILURE"

    def Print(self):
        print "YEHAA"
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个实例A.它可能看起来像这样,但是这种语法不正确.

a = A
a.Print()
Run Code Online (Sandbox Code Playgroud)

编辑:

一个更复杂的例子:

假设我有一个对象C,其目的是存储一个参数并对其进行一些计算.但是,该参数不是这样传递的,而是嵌入在一个巨大的参数文件中.它可能看起来像这样:

class C(object):
    def __init__(self, ParameterFile):
        self._Parameter = self._ExtractParamterFile(ParameterFile)
    def _ExtractParamterFile(self, ParameterFile):
        #does some complex magic to extract the right parameter
        return the_extracted_parameter
Run Code Online (Sandbox Code Playgroud)

现在我想转储并加载该对象的实例C.但是,当我加载这个对象时,我只有单个变量self._Parameter,我无法调用构造函数,因为它期望参数文件.

    @staticmethod
    def Load(file):
        f = open(file, "rb")
        oldObject = pickle.load(f)
        f.close()

        #somehow create newObject without calling __init__
        newObject._Parameter = oldObject._Parameter
        return newObject
Run Code Online (Sandbox Code Playgroud)

换句话说,如果不传递参数文件,则无法创建实例.在我的"真实"的情况,但是,它不是一个参数文件,但一些大数据的垃圾我当然不希望在内存中随身携带,甚至将其存储到光盘上.

因为我想C从方法返回一个实例,Load …

python constructor class instantiation

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