小编eva*_*ing的帖子

Python中__set__和__setattr__之间的区别是什么?应该在何时使用?

正如标题所说.

来自Java我以前用过:

private int A;

public void setA(int A) {
    this.A = A;
}

public int getA() {
    return this.A
}
Run Code Online (Sandbox Code Playgroud)

我如何在Python中执行此操作(如果需要).如果其中之一__setattr____set__用于此目的,另一个用于什么?

编辑:我觉得我需要澄清一下.我知道在Python中,一个doe不会在需要之前创建setter和getter.

让我们说我想做这样的事情:

public void setA(int A) {
    update_stuff(A);
    and_calculate_some_thing(A);
    this.A = A;
}
Run Code Online (Sandbox Code Playgroud)

什么是"pythonic"方式来实现这个?

python attributes getter-setter

13
推荐指数
4
解决办法
5531
查看次数

可以在端口声明中使用自定义类型吗?

我正在准备考试,通过一些旧的考试.其中一个问题是:

编写实现图中同步FSM的可综合行为VHDL代码... FSM有一个输入,称为请求,具有值(r1,r2,r3)的枚举类型...

这让我想写这段代码:

entity fsm is
  port ( clk     : in  std_logic;
         request : in  my_enum_type
  );
end fsm;
Run Code Online (Sandbox Code Playgroud)

某处有一个:

type my_enum_type is (r1, r2, r3);
Run Code Online (Sandbox Code Playgroud)

在某个地方(我已经尝试了正确的端口声明和建筑声明之后).

但我似乎无法让它发挥作用.我可以将自定义类型作为输入或输出吗?

vhdl

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

STM32F030启动时出现严重错误,__ libc_init_array

我正在尝试使用arm-none-eabi-gcc和Makefile编译STM32Cube项目.我已经指定:

CFLAGS = -mthumb\
         -march=armv6-m\
         -mlittle-endian\
         -mcpu=cortex-m0\
         -ffunction-sections\
         -fdata-sections\
         -MMD\
         -std=c99\
         -Wall\
         -g\
         -D$(PART)\
         -c
Run Code Online (Sandbox Code Playgroud)

和:

LDFLAGS = -Wl,--gc-sections\
          -Wl,-T$(LDFILE)\
          -Wl,-v
Run Code Online (Sandbox Code Playgroud)

FW构建没有问题.但是当我启动MCU时,我陷入了Hard Fault.堆栈跟踪是:

#0  HardFault_Handler () at ./Src/main.c:156
#1  <signal handler called>
#2  0x0800221c in ____libc_init_array_from_thumb ()
#3  0x080021be in LoopFillZerobss () at Src/startup_stm32f030x8.s:103
#4  0x080021be in LoopFillZerobss () at Src/startup_stm32f030x8.s:103
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Run Code Online (Sandbox Code Playgroud)

当我踩到bl __libc_init_array启动文件时,我会直接进入Hard Fault .

/* Zero fill the bss segment. */
FillZerobss:
  movs r3, #0
  str  r3, …
Run Code Online (Sandbox Code Playgroud)

gcc arm stm32 cortex-m

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

c ++ rvalue引用和移动语义

所以我昨天在youtube上观看了c ++视频,遇到了一个关于C++ - 11 rvalue引用和移动语义的视频.我认为我从广义上理解这个概念,但是今天当我通过TA进行我的代码时,他问我为什么std::pair<HostName, IPAddress>& p在下面的代码中没有引用(如).在这种情况下,我根本没有考虑过这个问题,但当他问我记得有关"在C++ - 11中你通常应该使用传值的视频"时.

因此我的问题是:在下面的代码中,是否std::pair<HostName, IPAddress> p会更好std::pair<HostName, IPAddress>& p?是否会使用移动语义,它会有所作为吗?

IPAddress NameServer::lookup( const HostName& host ) const {
    auto it = std::find_if( vec.begin(), vec.end(),
                       [host] ( std::pair<HostName, IPAddress> p ) {
        return p.first == host;
    } );
    ...
}
Run Code Online (Sandbox Code Playgroud)

c++ move-semantics c++11

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

在这种情况下拥有公共Java类成员是不好的做法?

我正在编写一个通信软件,它将与我所在的控制部门的实验室流程进行通信.进程通过串口进行通信,并且会有一些比特检查/操作.我编写了一个如下所示的辅助类:

public class Channel {

    public enum Kind {DIGITAL_IN, DIGITAL_OUT, ANALOG_IN, ANALOG_OUT, COUNTER_IN};

    private int resolution;
    private int number;
    private Kind kind;
    public byte[] bits;

    public Channel(Kind kind, int resolution, int number) throws Exception {
        if (resolution % 8 != 0) {
            throw new Exception("Resolution must be divisible by 8");
        }
        this.kind = kind;
        this.resolution = resolution;
        this.number = number;
        this.bits = new byte[resolution/8];
    }


    public int getResolution() {
        return resolution;
    }

    public int getNumber() {
        return number;
    }

    public …
Run Code Online (Sandbox Code Playgroud)

java private public

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

为什么Eclipse会抱怨死代码?

Eclipse继续说明最后的elseif和else是死代码,但我不明白.

if (img0 != null && img1 != null) {
    code;

} else if (img0 != null) {
    code;
} else if (img1 != null) {
    code;
} else {
    code;
}
Run Code Online (Sandbox Code Playgroud)

我的理由是这样的:

  1. 如果bote img0和img1不为null,则if计算为true
  2. 如果它评估为假则
    • img0为空OR
    • img1为空OR
    • img0和img1都是null.
  3. 如果img0不为null,则第一个elseif求值为true,如果求值为false,则img1可能不为null或者img0和img1都为null

我错过了什么,"死亡"在哪里?

提前致谢.

java eclipse dead-code

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

FreeRTOS 配置MINIMAL_STACK_SIZE

configMINIMAL_STACK_SIZECortex M0 MCU 上 FreeRTOS 的一些演示中设置为 60,而在其他一些演示中设置为 70。使用 STM32Cube 软件时设置为 128。

我的问题是实际上最小堆栈大小是多少?

查看STM32 Cortex-M0编程手册,我看到处理器寄存器是R0-R12、MSP、PSP、LR、PC、PSR、ASPR、IPSR、EPSR、PRIMASK、CONTROL。这不是意味着 MINIMAL 堆栈大小只有 23 个字吗?或者是否需要为上下文切换保存更多信息?

stack cpu-registers freertos

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

Cron python脚本没有执行

我已经阅读了几篇文章,但我找不到帮助.

我有一个使用smtplib发送邮件的python脚本.它从命令行调用时有效.

我有#!/usr/bin/python第一行,可以使用/home/pi/ipsender.py和运行它python /home/pi/ipsender.py.

我的crontab是*/1 * * * * /home/pi/ipsender.py,但我自己也尝试*/1 * * * * python /home/pi/ipsender.py*/1 * * * * /usr/bin/python /home/pi/ipsender.py.

这样做which python,我得到/usr/bin/pyhton和命令行我可以导入和使用的smtplib就好运行蟒蛇.

/var/log/syslog我得到:

Nov 27 22:57:01 raspberrypi /USR/SBIN/CRON[3764]: (pi) CMD (python /home/pi/ipsender.py)
Nov 27 22:57:01 raspberrypi /USR/SBIN/CRON[3763]: (CRON) info (No MTA installed, discarding output)
Run Code Online (Sandbox Code Playgroud)

我猜测没有MTA ......只是关于Cron没有发送关于它正在做什么的电子邮件,或者不是吗?

我该如何运行这个脚本.

[编辑]

脚本的权限是

-rwxr-xr-x 1 pi   pi       551 Nov 27 22:37 ipsender.py
Run Code Online (Sandbox Code Playgroud)

[Edit2]使用来自D Read的提示我得到以下日志 …

python cron crontab smtplib

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

c99内联语义与gcc(mspgcc)

我正在编写一些我希望内联的函数.

在这里阅读并使用第二个c99内联选项,内联所有声明和定义,如下所示:

extern inline void SPFD54124B_write_cmd(uint16_t command);
Run Code Online (Sandbox Code Playgroud)

在标题中,和

inline void SPFD54124B_write_cmd(uint16_t command)
{
    spi_write(command, CMD_WIDTH);
}
Run Code Online (Sandbox Code Playgroud)

在相应的c文件中.我期待获得功能的内联版本.

但是当我编译时,我得到:

Generating dependencies dep/spi.d from src/spi.c
Generating dependencies dep/spfd54124b.d from src/spfd54124b.c
Generating dependencies dep/pomodoro.d from src/pomodoro.c
Generating dependencies dep/font8x8_ualnum.d from src/font8x8_ualnum.c
Generating dependencies dep/font8x8_basic.d from src/font8x8_basic.c
Generating dependencies dep/evading_util.d from src/evading_util.c
Compiling src/evading_util.c
Compiling src/font8x8_basic.c
Compiling src/font8x8_ualnum.c
Compiling src/pomodoro.c
src/spfd54124b.h:96:20: warning: inline function 'SPFD54124B_write_pixel' declared but never defined [enabled by default]
src/spfd54124b.h:95:20: warning: inline function 'SPFD54124B_write_param' declared but never defined [enabled by …
Run Code Online (Sandbox Code Playgroud)

c inline extern

4
推荐指数
2
解决办法
6252
查看次数

中断读取()信号

我有一个连续读取数据串口的线程.如果主程序收到SIGINT,则在串行端口线程上调用g_thread_join().

但是,由于读取阻塞,串口线程不会返回并且程序停止,直到我在串行线上获得一个字节,然后它就可以退出.

有没有办法将SIGINT传递给read(),以便在主线程需要它时可以强制它返回?

c linux multithreading posix signals

4
推荐指数
2
解决办法
5405
查看次数