标签: python-datamodel

5409
推荐指数
22
解决办法
75万
查看次数

获取实例的类名?

如果我从中执行此操作的函数是实例的类派生的基类,如何找出在Python中创建对象实例的类的名称?

想到也许检查模块可能在这里帮助了我,但它似乎没有给我我想要的东西.如果没有解析__class__成员,我不知道如何获取这些信息.

python introspection instanceof python-datamodel

1303
推荐指数
10
解决办法
83万
查看次数

是否有内置函数来打印对象的所有当前属性和值?

所以我在这里寻找的是像PHP的print_r函数.这样我就可以通过查看相关对象的状态来调试我的脚本.

python debugging introspection pretty-print python-datamodel

876
推荐指数
18
解决办法
75万
查看次数

在Python中获取方法参数名称

鉴于Python函数:

def a_method(arg1, arg2):
    pass
Run Code Online (Sandbox Code Playgroud)

如何提取参数的数量和名称.即,鉴于我有一个func的引用,我想要返回func.[something]("arg1","arg2").

这种情况的使用场景是我有一个装饰器,我希望使用方法参数的顺序与它们为实际函数出现的顺序相同.也就是说,当我调用aMethod("a","b")时,装饰器看起来会打印出"a,b"吗?

python introspection decorator python-datamodel

214
推荐指数
10
解决办法
12万
查看次数

在Python中获取对象的完全限定类名

出于日志记录的目的,我想检索Python对象的完全限定类名.(完全限定,我的意思是类名,包括包和模块名.)

我知道x.__class__.__name__,但是有一个简单的方法来获得包和模块吗?

python python-datamodel

125
推荐指数
9
解决办法
7万
查看次数

Python:在__getitem__中实现切片

我正在尝试为我正在创建的类创建切片功能,以创建矢量表示.

到目前为止我有这个代码,我相信它会正确地实现切片,但每当我做一个调用,就像v[4]v是一个向量python返回一个关于没有足够的参数的错误.所以我试图弄清楚如何getitem在我的类中定义特殊方法来处理普通索引和切片.

def __getitem__(self, start, stop, step):
    index = start
    if stop == None:
        end = start + 1
    else:
        end = stop
    if step == None:
        stride = 1
    else:
        stride = step
    return self.__data[index:end:stride]
Run Code Online (Sandbox Code Playgroud)

python slice python-datamodel

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

Python,我应该基于__eq__实现__ne __()运算符吗?

我有一个类,我想覆盖__eq__()运算符.似乎我应该覆盖__ne__()运算符,但是__ne__基于__eq__这样实现它是否有意义?

class A:
    def __eq__(self, other):
        return self.value == other.value

    def __ne__(self, other):
        return not self.__eq__(other)
Run Code Online (Sandbox Code Playgroud)

或者,Python使用这些运算符的方式是否缺少某些东西,这不是一个好主意?

python comparison operators python-datamodel

80
推荐指数
4
解决办法
3万
查看次数

获取定义方法的类

如何获得在Python中定义方法的类?

我想要以下示例打印" __main__.FooClass":

class FooClass:
    def foo_method(self):
        print "foo"

class BarClass(FooClass):
    pass

bar = BarClass()
print get_class_that_defined_method(bar.foo_method)
Run Code Online (Sandbox Code Playgroud)

python python-2.6 python-datamodel

77
推荐指数
4
解决办法
4万
查看次数

防止在__init__之外创建新属性

我希望能够创建一个类(在Python中),一旦初始化__init__,不接受新属性,但接受现有属性的修改.我可以看到有几种黑客方法可以做到这一点,例如有一个__setattr__方法,比如

def __setattr__(self, attribute, value):
    if not attribute in self.__dict__:
        print "Cannot set %s" % attribute
    else:
        self.__dict__[attribute] = value
Run Code Online (Sandbox Code Playgroud)

然后__dict__直接在里面编辑__init__,但我想知道是否有"正确"的方法来做到这一点?

python oop class python-datamodel python-3.x

66
推荐指数
6
解决办法
2万
查看次数

一切都比无?

是否有Python内置数据类型,除此之外None:

>>> not foo > None
True
Run Code Online (Sandbox Code Playgroud)

foo这个类型的值在哪里?Python 3怎么样?

python python-datamodel python-3.x

65
推荐指数
2
解决办法
1万
查看次数