在python中,我可以使用"callable"来检查是否可以调用变量.像这样:
# -*- coding: utf-8 -*-
def test():
print "hello world"
a = test
if callable(a):
a()
Run Code Online (Sandbox Code Playgroud)
所以这样,我可以说a是一个函数,而不是一个实例变量.但是在ruby中,大括号可以省略,所以对我来说,当我调用它时,我无法判断它是函数还是实例变量.是否有一些方法可以在运行时检查变量是函数还是实例变量?
例如,我已经定义了一个类
class MyClass
{
....
};
Run Code Online (Sandbox Code Playgroud)
为了与MyClass对象进行if比较,我必须重载哪个运算符?
例如:
MyClass cc;
if ( cc ) // compile error
{
//do some stuff
}
Run Code Online (Sandbox Code Playgroud)
我试过了
bool operator == ( int value ) ; //guess the if () will call this
Run Code Online (Sandbox Code Playgroud)
要么
bool operator != ( int value ) ;
Run Code Online (Sandbox Code Playgroud)
但两个都给我一个编译错误!
Python interpeter为对象存储了哪些数据?
例如,在以下代码中:
class MyClass:
pass
if __name__ == "__main__":
c = MyClass()
import sys
print sys.getsizeof(c),sys.getsizeof(MyClass)
Run Code Online (Sandbox Code Playgroud)
为什么输出72和104?为什么类比对象实例更大?类和对象必须存储什么,占用72个字符和104个字符?
令人惊讶的是,当我运行时:
class MyClass:
def __init__(self):
self.mIntValue = 1024
self.mStringValue = "hust";
if __name__ == "__main__":
c = MyClass()
import sys
print sys.getsizeof(c),sys.getsizeof(MyClass)
Run Code Online (Sandbox Code Playgroud)
输出仍然是72和104,但我添加了两个额外的属性,所以我猜对象应该变得"更大".好吧,结果似乎不是这样.
我知道以下方式有效:
package mypackage;
public class Main{
public void oFunc(){
class Inner{
void foo(){
}
};
Inner s = new Inner();
s.foo();
}
}
Run Code Online (Sandbox Code Playgroud)
有没有这样的方法可以创建对象,同时声明它?这无法编译,是否有类似的方法来做到这一点?
package mypackage;
public class Main{
public void oFunc(){
new class Inner{
void foo(){
}
}().foo();
}
}
Run Code Online (Sandbox Code Playgroud) 我是来自C++/Python/Java的PHP的新用户.在PHP中,有一个内置的数组类型,如何在插入新对象或旧对象的副本后证明数组是相同的数组?在C++/Python/Java中,我可以使用对象地址,id()或hashcode来测试对象是否相同,如何在PHP中进行相同的测试?
<?php
$a['0'] = "a";
$a['1'] = 'b'; //here, $a is a new copied one or just a reference to the old?
?>
Run Code Online (Sandbox Code Playgroud)
好的,我更新了我的问题,实际上,没有具体的问题.我只是想知道在插入新值之前和之后数组对象是否保持相同.在Python中,我可以像这样进行测试:
a = [1]
print id(a)
a.append(2)
print id(a)
Run Code Online (Sandbox Code Playgroud)
顺便说一句,这是Python中的id()函数手册.
id(...)
id(object) -> integer
Return the identity of an object. This is guaranteed to be unique among
simultaneously existing objects. (Hint: it's the object's memory address.)
Run Code Online (Sandbox Code Playgroud)
代码更新:
# -*- coding: utf-8 -*-
a = [1, 2, 3]
b = [1, 2, 3]
print id(a)
print id(b) //the …Run Code Online (Sandbox Code Playgroud)