我有一个具有许多默认值的类,因为我无法重载函数。有没有比使用多个默认参数或使用 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)
在其他语言中,我可能会重载构造函数。
我想与我从 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) 我写了一个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)
我究竟做错了什么?
更新:
变量不能包含连字符.删除它们解决了问题.