小编pyt*_*hon的帖子

红宝石中有"可赎回"的东西吗?

在python中,我可以使用"callable"来检查是否可以调用变量.像这样:

# -*- coding: utf-8 -*-


def test():
    print "hello world"

a = test
if callable(a):
    a()
Run Code Online (Sandbox Code Playgroud)

所以这样,我可以说a是一个函数,而不是一个实例变量.但是在ruby中,大括号可以省略,所以对我来说,当我调用它时,我无法判断它是函数还是实例变量.是否有一些方法可以在运行时检查变量是函数还是实例变量?

ruby

3
推荐指数
1
解决办法
2169
查看次数

为了在if语句中使用我的类,要重载哪个运算符?

例如,我已经定义了一个类

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)

但两个都给我一个编译错误!

c++ overwrite operator-keyword

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

python对象和类的内存布局是什么?

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,但我添加了两个额外的属性,所以我猜对象应该变得"更大".好吧,结果似乎不是这样.

python sizeof

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

有没有办法在同一个内部类中声明它?

我知道以下方式有效:

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)

java class

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

我怎样才能获得数组的地址?

我是来自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)

php

0
推荐指数
1
解决办法
103
查看次数

标签 统计

c++ ×1

class ×1

java ×1

operator-keyword ×1

overwrite ×1

php ×1

python ×1

ruby ×1

sizeof ×1