有人能解释一下这里发生了什么吗?
class Test(object):
__getitem__ = getattr
t = Test()
t['foo']
Run Code Online (Sandbox Code Playgroud)
给出错误(在Python 2.7和3.1中):
TypeError: getattr expected at least 2 arguments, got 1
Run Code Online (Sandbox Code Playgroud)
然而:
def f(*params):
print params # or print(params) in 3.1
class Test(object):
__getitem__ = f
Run Code Online (Sandbox Code Playgroud)
打印出我期望的两个参数.
class MyClass(object):
def __init__(self, name):
self.name = name
self._prof = None
self._ischanged = False
@property
def prof(self):
if not self._prof:
self._prof = "Sample Prof"
return self._prof
@prof.setter
def prof(self, value, anothervalue):
pass
Run Code Online (Sandbox Code Playgroud)
在这里您可以使用以下方法获得教授:
myclass = MyClass("sam")
myclass.prof
Run Code Online (Sandbox Code Playgroud)
但我找不到设置 prof 值的方法。
在上面的代码中,我如何将两个值传递给教授?
我已经看了很多关于这个问题的不同看法,答案在某种程度上取决于问题是如何表达的.您可以使用拆分或使用正则表达式来执行此操作.
我正在做的是使用WMI返回主板的BIOSVersion.无论出于何种原因,制造商都会提供更多内容,而不仅仅是版本号.在整个字符串中,版本号位于句点分隔字符串的第三个位置.在第二个位置的值是ALWAYS 86A.在此示例中,实际上是版本0460.SIX7910J.86A.0460.2012.0327.1627.
那么,对于我在做什么,这将是"最佳实践"?查询表达式中的正则表达式,循环使用split或其他我尚未找到的结果?
作为参考,这是我正在使用的C#WMI代码.示例代码使用Windows窗体,因为这是WMI代码创建者输出的内容.我将在WPF项目中使用它,但我不知道这对于问题的本质意味着太多.我想我可以找出所需的代码,但我想要了解哪种方式是最好的方法.
感谢您的任何帮助,您可以提供.如果代码没有全部出现在代码块中,我会提前道歉.我以为我遵循了如何做的说明,但在代码块的示例显示中,它在代码块中有一点代码,然后转到普通文本然后返回到代码块.希望实际渲染更清晰.
using System;
using System.Management;
using System.Windows.Forms;
namespace WMISample
{
public class MyWMIQuery
{
public static void Main()
{
try
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT BIOSVersion FROM Win32_BIOS");
foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("Win32_BIOS instance");
Console.WriteLine("-----------------------------------");
if(queryObj["BIOSVersion"] == null)
Console.WriteLine("BIOSVersion: {0}", queryObj["BIOSVersion"]);
else
{
String[] arrBIOSVersion = (String[])(queryObj["BIOSVersion"]);
foreach (String arrValue in arrBIOSVersion)
{
Console.WriteLine("BIOSVersion: {0}", arrValue);
}
}
}
}
catch (ManagementException e)
{
MessageBox.Show("An error occurred while …Run Code Online (Sandbox Code Playgroud) 我有一个C扩展模块,我想添加一些Python实用程序函数.有推荐的方法吗?
例如:
import my_module
my_module.super_fast_written_in_C()
my_module.written_in_Python__easy_to_maintain()
Run Code Online (Sandbox Code Playgroud)
我主要对Python 2.x感兴趣.
在C++中是否有一种方法可以创建一个匿名命名空间,并且只从中导出一个函数?
我想要的东西:
namespace {
void Bar() {}
void Foo() { Bar(); }
}
Run Code Online (Sandbox Code Playgroud)
现在,我想以某种方式访问,Foo()但确保没有办法触摸Bar()
谢谢!