如何在Python中获取类属性的类型与使用此代码在Java中执行相同的方式?
Field f = ClassName.class.getDeclaredField("attr_name");
Class<?> ftype = f.getType();
使用
c = ClassName()
c.__dict__
我可以获取所有属性的名称和值,但不能获取它们的类型。
更具体地说,使用Django,如果我有两个类,请说Poll和Choice,定义如下
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
我如何知道某个类是否具有models.ForeignKey
作为属性的类型以及它指向的其他类?
我需要输出类似的东西:
# attribute poll in class Choice is a ForeignKey type
# and it points to Poll model
Choice.poll -> Poll
答案 0 :(得分:3)
要在Python中获取对象的类型,请使用type
。从那里,您可以使用__name__
将类的名称作为字符串:
>>> class MyClass(object):
... pass
...
>>> obj = MyClass()
>>> type(obj)
<class '__main__.MyClass'>
>>> type(obj).__name__
'MyClass'
答案 1 :(得分:3)
要获取相关模型的类名,请使用rel.to
:
print Choice.poll.field.rel.to.__name__ # prints 'Poll'
或者,这样:
field = Choice._meta.get_field_by_name('poll')[0]
print field.rel.to.__name__ # prints 'Poll'
另见: