[英]Get name of subclass of ndb.StructuredProperty(subclass, repeated=True)
[英]Get subclass name?
是否可以获取子类的名称? 例如:
class Foo:
def bar(self):
print type(self)
class SubFoo(Foo):
pass
SubFoo().bar()
将打印: < type 'instance' >
我正在寻找一种获取"SubFoo"
的方法。
我知道你可以做isinstance
,但我不知道 class 先验的名字,所以这对我不起作用。
您可以使用
SubFoo().__class__.__name__
这可能是偏离主题的,因为它给你一个类名:)
#!/usr/bin/python
class Foo(object):
def bar(self):
print type(self)
class SubFoo(Foo):
pass
SubFoo().bar()
从object
子类化为你提供了新式的类(不再那么新了 - python 2.2!)无论何时你想要使用self属性,如果从对象继承,你将获得更多的帮助。 Python的文档...... 新的样式类 。 从历史上看,Python为了向后兼容而离开旧式方式Foo()
。 但是,这是很久以前的事了。 没有太多理由不从对象继承。
使用新式类时,它的效果会更好。
class Foo(object):
....
SubFoo.__name__
和父母: [cls.__name__ for cls in SubFoo.__bases__]
提醒一下,这个问题在Python 3.x
中不存在, print(type(self))
将提供更多信息<class '__main__.SubFoo'>
而不是旧的< type 'instance' >
。
这是因为object
在Python 3.x
中被自动子类化,使每个 class 成为new-style
class。
更多讨论在What is the purpose of subclassing the class "object" in Python? .
就像其他人指出的那样,只需获取子类名称即可print(type(self).__name__)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.