小编joh*_*den的帖子

有没有一种更Pythonic的方法来为一个类提供多个默认参数?

我有一个具有许多默认值的类,因为我无法重载函数。有没有比使用多个默认参数或使用 kwargs 更好的方法?

我考虑过将字典传递给我的类,但是如何控制是否传递必要的参数?

是否有一种更Pythonic的方式来允许参数而不将它们全部定义为默认值?

例如,我允许许多默认值:

class Editor:
    def __init__(self,
                 ffmpeg: str,
                 font_file=None,
                 font_size=148,
                 font_color="white",
                 title_length=5,
                 title_x="(w-text_w)/2",
                 title_y="(h-text_h)/2",
                 box=1,
                 box_color="black",
                 box_opacity=0.5,
                 box_border_width=25):

        self.ffmpeg = ffmpeg

        self.title s= define_title(
            font_file, font_size, font_color, title_length)

        self.box = define_box(
            box, box_color, box_opacity, box_border_width},

        self.coordinates = {"x": title_x, "y": title_y}
Run Code Online (Sandbox Code Playgroud)

在其他语言中,我可能会重载构造函数。

python constructor class default-arguments

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

extern "C" 静态数组函数参数

我想与我从 C++ 程序编写的 C 库交互。C 库是使用现代 C 编写的,并使用static数组说明符来显示数组的最小长度,或者指针不能为NULL

当我尝试编写与extern "C"使用此功能的函数接口的程序时,我收到以下消息:

错误:静态数组大小是 C99 特性,在 C++ 中不允许

不能与这个 C 库接口吗?我是否必须修改 C 库,或者是否有替代方案?

这是导致错误的示例程序:

// foo.h

#ifndef FOO_H
#define FOO_H

void foo(int i[static 1]);

#endif //FOO_H
Run Code Online (Sandbox Code Playgroud)
// foo.c
#include <stdio.h>

void foo(int i[static 1]) {
    printf("%i", i[0]);
}
Run Code Online (Sandbox Code Playgroud)
// main.cpp

extern "C"
{
    void foo(int i[static 1]);
}

int main() {
    int i[] = {1};
    foo(i);
}
Run Code Online (Sandbox Code Playgroud)

c c++ c99 c11

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

从变量声明的shell脚本中找不到命令错误

我写了一个bash脚本,我的脚本失败,当我正在做的就是分配一个变量.

在我的脚本中,我有以下声明:

pcre-version="8.39"
Run Code Online (Sandbox Code Playgroud)

尝试运行该程序后,我收到此错误:

-bash: pcre-version=8.39: command not found
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?


更新:

变量不能包含连字符.删除它们解决了问题.

bash shell

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

标签 统计

bash ×1

c ×1

c++ ×1

c11 ×1

c99 ×1

class ×1

constructor ×1

default-arguments ×1

python ×1

shell ×1