小编Dan*_*din的帖子

使一个类在同一个实例中可调用

class Foo(object):
    def tick(self):
        print("something")

class Bar(object):
    def __init__(self):
        self.foo = Foo()

    def tick(self):
        #Here's what I do....
        self.foo.tick()

        #here's what my goal would be
        self.foo()

b = Bar()
b.tick()
Run Code Online (Sandbox Code Playgroud)

这基本上是我的目标.从我收集到的内容中我可以将tick功能更改为__call__,这样我就可以按照自己的意愿行事.其他几个答案说这会产生一个对象的新实例,这是否意味着它会使用self.foo的内存?或者它会成为一个全新的对象,新实例?或制作self.foo的副本?

此外还有一些缺点,可能会或可能不会表现出来.对于我的程序的特定部分,我检查对象是否有一个__call__来确定我传递的参数是函数还是变量,我真的不认为我想要允许它被调用(尽管如此,我认为该类在技术上将是一个函数.)有没有办法区分函数和可调用类?

还有什么能使这种做法变得不受欢迎(这是一种pythonic的工作方式吗?)?我的下一个想法是,鉴于其他变量前缀为__cant,在类之外使用,但这似乎不是这里的情况.

python class callable

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

Python函数调用非常慢

这主要是为了确保我的方法是正确的,但我的基本问题是,如果我需要访问函数,那么检查函数外部是否值得.我知道,我知道,过早优化,但在很多情况下,它在函数调用中放置一个if语句以确定是否需要运行其余代码,或者将它放在函数调用之前.换句话说,它不会以任何方式做到这一点.现在,所有的检查都在两者之间混合,我想让它变得更加美观和标准化.

我问的主要原因是因为我看到的其他答案主要是参考timeit,但这给了我负数,所以我切换到这个:

import timeit
import cProfile

def aaaa(idd):
    return idd

def main():
    #start = timeit.timeit()
    for i in range(9999999):
        a = 5
    #end = timeit.timeit()
    #print("1", end - start)

def main2():
    #start = timeit.timeit()
    for i in range(9999999):
        aaaa(5)
    #end = timeit.timeit()
    #print("2", end - start)

cProfile.run('main()', sort='cumulative')
cProfile.run('main2()', sort='cumulative')
Run Code Online (Sandbox Code Playgroud)

得到这个输出

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.310    0.310 {built-in method exec}
        1    0.000    0.000    0.310    0.310 <string>:1(<module>)
        1    0.310    0.310    0.310    0.310 test.py:7(main)
        1    0.000    0.000 …
Run Code Online (Sandbox Code Playgroud)

python profiling function call

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

C# 对变量和/或表单对象的引用数组

我想做的是拥有一个对变量的引用数组。我的意思是相当于一个指向 int 的指针的 C 数组(例如)。

示例:(!!不是真正的代码!!)

int a = 4;
int b = 5;
int c = 6;
List<ref int> tmp = new List<ref int>();

tmp.Add(ref a);
tmp.Add(ref b);
tmp.Add(ref c);

tmp[0] = 16;
tmp[1] = 3;
tmp[2] = 1000;

Console.Writeline(tmp[0] + " " + a); // 16 16
Console.Writeline(tmp[1] + " " + b); // 3 3
Console.Writeline(tmp[2] + " " + c); // 1000 1000
Run Code Online (Sandbox Code Playgroud)

我的案例的具体情况:我有一个与字典中的键相对应的字符串列表。我想我想要的是一个元组列表,其中 Type1 是对 int 或 string 的引用,Type2 是对 Textbox 的引用。

我将迭代这个列表,使用字符串从字典中获取值(并使用该数据进行处理),然后将结果存储到 Type1 中。最终我将从这些 …

c# arrays reference func

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

标签 统计

python ×2

arrays ×1

c# ×1

call ×1

callable ×1

class ×1

func ×1

function ×1

profiling ×1

reference ×1