2016-04-24 61 views
1

从内省的角度来看,有一种方法可以在不创建实例的情况下获取类实例变量。创建实例时很容易:Python类实例自省

class Super: 
    def __init__(self, name): 
     self.name = name 

class Sub(Super): 
    pass 

a = Super("Nice_Name") 

print(a.__dict__.keys()) 

但是我想在不创建实例的情况下获取该信息,仅为了内省。有办法吗?

+1

查看http://stackoverflow.com/questions/109087/how-to-get-instance-variables-in-python – jonrsharpe

+0

如果他们没有实例,它们的值是什么? – Natecat

+4

问题是,类实例在分配之前根本没有任何属性;班级不会“宣布”他们。 '__init__'仅仅为实例第一次创建后即时创建的属性赋值。本质上,你要求模拟'__init__'的执行。 – chepner

回答

0

不,你不能,因为python不是statically typed language,所以在一个对象被实例化之前,该对象没有类型。例如,想像这样的一类:

class A: 
def __init__(self): 
    self.a = "a" 

def change_type(self): 
    self.a = 1 

会的self.a类型是什么对象实例之前?如果你需要反省,你不能使用python。

+0

仅仅因为这不是一个答案,或者是一个只有链接的答案。把这作为评论。只要看看其他人对这个问题的评论:他们更长,更具建设性。 SO规则,对不起 –

+0

@Apero我不同意。他的问题完全由此得到了回答,并且链接是澄清什么是静态类型的语言,并且自我并不回答他的问题。 – Natecat

+0

确实,所以这应该是一个评论,而不是一个答案;-) –