有没有办法检查对象是否是类的实例?不是具体类的实例,而是任何类的实例.
我可以检查一个对象不是一个类,而不是一个模块,而不是一个追溯等,但我对一个简单的解决方案感兴趣.
根据我对self关键字的理解,它只是引用了类的当前实例.这不是一直都是默认行为吗?例如,不是
self.var_one = method(args)相当于var_one = method(args)?
如果是这样那么自我的用途是什么?
为什么这不起作用?我正试图让一个类的实例删除自己.
>>> class A():
def kill(self):
del self
>>> a = A()
>>> a.kill()
>>> a
<__main__.A instance at 0x01F23170>
Run Code Online (Sandbox Code Playgroud) 我是JS和Backbone的新手
这两者有什么区别?
TestModel = new Backbone.Model({ title: "test title" })
TestModel = Backbone.Model.extend({ title: "test title" })
Run Code Online (Sandbox Code Playgroud) 我需要一种方法来检查对象是否是使用RSpec的另一个对象的实例.例如:
describe "new shirt" do
it "should be an instance of a Shirt object"
# How can i check if it is an instance of a shirt object
end
end
Run Code Online (Sandbox Code Playgroud) 以下内容无法编译,给出"非法转发引用"消息:
class StaticInitialisation {
static
{
System.out.println("Test string is: " + testString);
}
private static String testString;
public static void main(String args[]) {
new StaticInitialisation();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,以下编译:
class InstanceInitialisation1 {
{
System.out.println("Test string is: " + this.testString);
}
private String testString;
public static void main(String args[]) {
new InstanceInitialisation1();
}
}
Run Code Online (Sandbox Code Playgroud)
但以下内容无法编译,给出"非法转发引用"消息:
class InstanceInitialisation2 {
private String testString1;
{
testString1 = testString2;
}
private String testString2;
public static void main(String args[]) {
new InstanceInitialisation2();
}
}
Run Code Online (Sandbox Code Playgroud)
为什么StaticInitialisation和InstanceInitialisation2不能编译,而InstanceInitialisation1呢?
在我的DateTime类中,这是检查对象是否是类的实例的唯一方法吗?
$cls = ReflectionClass("DateTime");
if (! $cls->isInstance( (object) $var ) ) {
// is not an instance
}
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎有点沉重.
对象,实例和引用有什么区别?他们说他们必须为他们的应用程序创建一个实例?那是什么意思?
我正在尝试为学生的作业构建一个自动测试框架(基于jUnit,但这并不重要).他们必须为某些类创建构造函数,并为它们添加一些方法.后来,通过我提供的测试功能,他们将检查它们是否正常.
我想做的是,通过反射,创建一个我想要测试的类的新实例.问题是,有时候,没有默认的构造函数.我不关心这个,我想创建一个实例并自己初始化实例变量.有没有办法做到这一点?我很抱歉,如果之前有人问过,但我找不到任何答案.
提前致谢.
正如标题所说,我想在同一个类的静态方法中创建一个类的实例.到目前为止,我已经想到了我可以做这样的事情:
class Foo{
public $val;
public static function bar($val){
$inst = new Foo;
$inst->val = $val;
return $inst;
}
}
Run Code Online (Sandbox Code Playgroud)
因此,我可以这样做.
$obj = Foo::bar("some variable");
Run Code Online (Sandbox Code Playgroud)
哪个好.
所以现在问题.是否有一种更容易实现的方法,我不知道,或任何实现相同结果的捷径?以这种方式创建实例有什么优点或缺点吗?
谢谢.
instance ×10
java ×3
class ×2
constructor ×2
object ×2
oop ×2
php ×2
python ×2
ruby ×2
backbone.js ×1
forward ×1
instanceof ×1
isinstance ×1
javascript ×1
new-operator ×1
reference ×1
reflection ×1
rspec ×1
self ×1
static ×1
testing ×1