所以我在这里寻找的是像PHP的print_r函数.这样我就可以通过查看相关对象的状态来调试我的脚本.
python debugging introspection pretty-print python-datamodel
如何获得可迭代的类中的所有变量的列表?有点像locals(),但对于一个类
class Example(object):
bool143 = True
bool2 = True
blah = False
foo = True
foobar2000 = False
def as_list(self)
ret = []
for field in XXX:
if getattr(self, field):
ret.append(field)
return ",".join(ret)
Run Code Online (Sandbox Code Playgroud)
这应该回来了
>>> e = Example()
>>> e.as_list()
bool143, bool2, foo
Run Code Online (Sandbox Code Playgroud) 我有类SomeClass属性.例如id和name:
class SomeClass(object):
def __init__(self):
self.__id = None
self.__name = None
def get_id(self):
return self.__id
def set_id(self, value):
self.__id = value
def get_name(self):
return self.__name
def set_name(self, value):
self.__name = value
id = property(get_id, set_id)
name = property(get_name, set_name)
Run Code Online (Sandbox Code Playgroud)
列出属性的最简单方法是什么?我需要这个序列化.
编写一个将类映射到简单表视图的GUI库时,我遇到了这个问题.某个类型=列的每个类成员以及列的顺序都很重要.但...
class Person(object):
name = None
date_of_birth = None
nationality = None
gender = None
address = None
comment = None
for member in Person.__dict__.iteritems():
if not member[1]:
print member[0]
Run Code Online (Sandbox Code Playgroud)
输出:
comment
date_of_birth
name
address
gender
nationality
...
Run Code Online (Sandbox Code Playgroud)
呃,奥得河搞得一团糟......想要的输出:
name
date_of_birth
nationality
gender
address
comment
Run Code Online (Sandbox Code Playgroud)
有没有办法在不保留额外OrderedDict()列的情况下完成?
是否可以获取某个类或对象的所有属性?我有一个具有许多属性的类,我想创建一个函数/方法,它返回对象的所有属性等于 None 。
由于这些属性有很多,我必须避免将它们全部写入函数中。
像这样的东西:
def get_all_empty_attributes(self):
for attr in self.attributes.names:
if self.attr==None:
yield attr
Run Code Online (Sandbox Code Playgroud)
是否可以使用内置函数来完成?
给定一个简单的类,有没有办法为其输出所有可能的属性?标准属性,如__class__and__doc__ 和 特殊的只读属性,如__mro__, __bases__et al。一般来说,所有存在的属性?
考虑一个类的最简单的情况:
class myClass:
pass
Run Code Online (Sandbox Code Playgroud)
的dir(),vars()和inspect.getmembers()所有的排除某些builtin属性。通过使用myClass.__dir__(MyClass)which提供最完整的列表,在添加内置属性时,排除 的用户定义属性MyClass,例如:
In [3]: set(MyClass.__dir__(MyClass)) - set(dir(MyClass))
Out[3]:
{'__abstractmethods__', '__base__', '__bases__',
'__basicsize__', '__call__', '__dictoffset__',
'__flags__', '__instancecheck__', '__itemsize__',
'__mro__', '__name__', '__prepare__', '__qualname__',
'__subclasscheck__', '__subclasses__', '__text_signature__',
'__weakrefoffset__', 'mro'}
Run Code Online (Sandbox Code Playgroud)
根据添加的类似问题之一,这是不可能的。如果目前仍然不可能,那么“隐藏”某些属性__bases__(从标准调用到dir(), vars() & inspect而不是像__name__?
这是最有可能被标记为重复的,但是,它是旧的并且主要与
Python 2.x. 公认的答案是没有办法,但它是在 08' 中提供的。12' 中的最新答案建议 …
python ×6
attributes ×2
class ×1
debugging ×1
object ×1
pretty-print ×1
properties ×1
python-2.x ×1
python-3.x ×1