小编mul*_*ces的帖子

53
推荐指数
6
解决办法
5万
查看次数

Python:使类可迭代

我继承了一个项目,其中包含许多大类,只有类对象(整数,字符串等).我希望能够检查属性是否存在而无需手动定义属性列表.

是否可以使用标准语法使python 本身可迭代?也就是说,我希望能够使用for attr in Foo:(或甚至)迭代所有类的属性,if attr in Foo而无需首先创建类的实例.我想我可以通过定义来做到这一点__iter__,但到目前为止我还没有完全掌握我正在寻找的东西.

我通过添加如下__iter__方法实现了我想要的一些:

class Foo:
    bar = "bar"
    baz = 1
    @staticmethod
    def __iter__():
        return iter([attr for attr in dir(Foo) if attr[:2] != "__"])
Run Code Online (Sandbox Code Playgroud)

但是,这并不能完全满足我的需求:

>>> for x in Foo:
...     print(x)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'classobj' object is not iterable
Run Code Online (Sandbox Code Playgroud)

即便如此,这仍然有效:

>>> for x in Foo.__iter__():
...     print(x)
bar
baz
Run Code Online (Sandbox Code Playgroud)

python syntax attributes static-methods loops

37
推荐指数
3
解决办法
2万
查看次数

为什么wireshark没有检测到我的界面?

我刚刚安装了Wireshark,但是当我单击时capture > interfaces,会出现对话框,但它不包含我的网络接口.

点击capture > interfaces它时,如下面的屏幕截图所示.是什么导致这个?

没有列出的接口

networking wireshark

34
推荐指数
2
解决办法
9万
查看次数

如何在C++中检索基类的类型?

对于这个特定项目,我无法使用C++ 11功能(例如decltype),因为编译器还不支持它们.我需要能够提供当前类作为模板参数,最好是在没有参数的宏中(见下文),而不需要修饰class声明或隐藏花括号等.

class Foo: private Bar<Foo> {
   MAGIC //expands to using Bar<Foo>::Baz; and some others
   public:
      void otherFunction();
      //... the rest of the class
};
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望这与Qt的Q_OBJECT宏非常相似,但不会引入另一个预编译步骤和相关的生成类.typeid可能在运行时很有用,但我的目标是在构建时完成所有这些.

如何编写MAGIC宏以便每次都不需要重复类名?

c++ templates c-preprocessor c++03

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

当ping.exe成功时会导致ICMPsendEcho失败的原因

我的手上有一个有趣的情况,我不太清楚如何进行故障排除.我做了一些类似于我的情况的搜索,但没有什么比得上它.如果答案已存在于某处,我将非常感谢任何可以指出我正确方向的人.

好的,到了这一点.

我正在编写一个用于监控互联网连接的监视应用程序.它设计为以设定的间隔对一组域进行ping操作,当它们中的任何一个响应ping时,状态定时器将被重置.如果状态计时器超过设定的阈值,则尝试多个纠正措施阶段来解决问题.

够简单吧?

这就是它变得奇怪的地方.

我正在使用ICMPsendecho发出ping请求.在我的开发环境(win7)上,它似乎工作正常,测试并且一切顺利.但是,在部署它的环境中,它无法收到响应.部署环境是Windows XP sp3机器.

在整个故障排除过程中,我注意到了一些事情,这些事情可能会或可能没有帮助实际解决这个问题.

windows ping.exe在我用于测试连接状态的所有域的部署环境中工作正常,它只有我的ICMPsendecho调用似乎无法生成响应.

我在部署环境中安装了wireshark,我可以看到两种类型的ping请求成功发出数据包.windows ping生成长度为74字节的请求数据包,我的程序调用生成长度为42字节的数据包.Windows响应数据包在接收时类似于74个字节.

安装wireshark后,切换到开发环境一分钟.Windows ping会在包含部署环境时生成类似的情况.但是,我的应用程序在生成请求时,数据包长度为42个字节(与部署环境相同),但它收到的响应长度为60个字节.

正如我所说,这些信息可能有用,也可能没有用,但我试图找出为什么这个应用程序无法生成ICMP响应,因为Windows ping似乎在该机器上正常工作.

可能有帮助的另一个小小的问题,互联网连接正在监控使用AT&T提升4g热点,实际设备是sierra无线MC8790 AirPrime卡.

谁有任何关于为什么这些ping失败的想法?

提前感谢您提供的任何有用信息,并花时间阅读我的帖子.

PS.

delphi networking ping icmp

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