小编Sad*_*aze的帖子

具有指定元类的 Python abc 继承

如果类指定了元类,从 ABC 继承的正确方法是什么?

直接的尝试

class KindMeta(type):
    ...

class Kind(ABC, metaclass=KindMeta):
    ...
Run Code Online (Sandbox Code Playgroud)

导致TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases

在 KindMeta 中继承 ABCMeta 似乎有点错误,因为这mcs也用于创建非抽象类。

创建从 KindMeta 继承的自定义 ABC 听起来也不错。

有没有更好的处理方法?或者哪个解决方案更Pythonic并且应该是首选?

metaclass abc python-3.x

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

将指针与**递增而在C中没有递增的区别

我在理解增加指针的两种方式的差异时遇到了一个问题:

int **a;

a++;      //works fine
**a++;    //same here
a += n;   //still good
**a += n; //is not the same and I can't figure out what is going on
Run Code Online (Sandbox Code Playgroud)

我试图在这里以相反的顺序打印程序的参数

int main(int argc, char **argv)
{
    argv += argc;                 //works fine until it is changed to 
                                  //                   **argv += argc
    while (--argc > 0)
    {
        argv--;
        (*argv)--;
        while (*(*argv)++)
            ft_putchar(**argv);
        if (argc - 1 > 0)
            ft_putchar('\n');
    }
    return (1);
}
Run Code Online (Sandbox Code Playgroud)

总结问题 - 为什么第二种方式不一样?

c pointers increment

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

python如何实现串联?

例如,如果我尝试将三个字符串与+运算符:串联在一起,s = "s1" + "s2" + "s3"python如何处理它?
它会计算len1,len2,然后为大小为len1 + len2的新字符串分配内存,并重复执行直到+处理完所有运算符?
还是它可以计算所有操作数的长度并只执行一次分配?在这种情况下,可以安全地假设

s = "s1" + "s2" + "s3"
Run Code Online (Sandbox Code Playgroud)

执行速度比

s = "s1" + "s2"
s += "s3"
Run Code Online (Sandbox Code Playgroud)

或者,也许根本没有分配,只是某种程度上记住了操作数的内存地址及其顺序?
感谢有关python优化主题的文章建议。

python python-3.x

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

标签 统计

python-3.x ×2

abc ×1

c ×1

increment ×1

metaclass ×1

pointers ×1

python ×1