如果我从中执行此操作的函数是实例的类派生的基类,如何找出在Python中创建对象实例的类的名称?
想到也许检查模块可能在这里帮助了我,但它似乎没有给我我想要的东西.如果没有解析__class__成员,我不知道如何获取这些信息.
所以我在这里寻找的是像PHP的print_r函数.这样我就可以通过查看相关对象的状态来调试我的脚本.
python debugging introspection pretty-print python-datamodel
鉴于Python函数:
def a_method(arg1, arg2):
pass
Run Code Online (Sandbox Code Playgroud)
如何提取参数的数量和名称.即,鉴于我有一个func的引用,我想要返回func.[something]("arg1","arg2").
这种情况的使用场景是我有一个装饰器,我希望使用方法参数的顺序与它们为实际函数出现的顺序相同.也就是说,当我调用aMethod("a","b")时,装饰器看起来会打印出"a,b"吗?
出于日志记录的目的,我想检索Python对象的完全限定类名.(完全限定,我的意思是类名,包括包和模块名.)
我知道x.__class__.__name__,但是有一个简单的方法来获得包和模块吗?
我正在尝试为我正在创建的类创建切片功能,以创建矢量表示.
到目前为止我有这个代码,我相信它会正确地实现切片,但每当我做一个调用,就像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) 我有一个类,我想覆盖__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中定义方法的类?
我想要以下示例打印" __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中),一旦初始化__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内置数据类型,除此之外None:
>>> not foo > None
True
Run Code Online (Sandbox Code Playgroud)
foo这个类型的值在哪里?Python 3怎么样?
python ×10
python-datamodel ×10
oop ×2
python-3.x ×2
class ×1
comparison ×1
debugging ×1
decorator ×1
instanceof ×1
metaclass ×1
operators ×1
pretty-print ×1
python-2.6 ×1
slice ×1