小编Jam*_*kin的帖子

将__getitem__转发给getattr

有人能解释一下这里发生了什么吗?

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)

打印出我期望的两个参数.

python

3
推荐指数
1
解决办法
1543
查看次数

在 python 属性设置器中传递两个参数

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 值的方法。

在上面的代码中,我如何将两个值传递给教授?

python class

3
推荐指数
1
解决办法
4198
查看次数

从字符串中获取特定位置的最佳方法

我已经看了很多关于这个问题的不同看法,答案在某种程度上取决于问题是如何表达的.您可以使用拆分或使用正则表达式来执行此操作.

我正在做的是使用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# regex wmi wmi-query winforms

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

在模块中组合C和Python函数

我有一个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感兴趣.

python cpython

0
推荐指数
2
解决办法
1044
查看次数

c ++名称空间导出

在C++中是否有一种方法可以创建一个匿名命名空间,并且只从中导出一个函数?

我想要的东西:

namespace {
  void Bar() {}
  void Foo() { Bar(); }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想以某种方式访问​​,Foo()但确保没有办法触摸Bar()

谢谢!

c++ namespaces export

0
推荐指数
1
解决办法
1523
查看次数

标签 统计

python ×3

c# ×1

c++ ×1

class ×1

cpython ×1

export ×1

namespaces ×1

regex ×1

winforms ×1

wmi ×1

wmi-query ×1