从内省的角度来看,有一种方法可以在不创建实例的情况下获取类实例变量。创建实例时很容易:Python类实例自省
class Super:
def __init__(self, name):
self.name = name
class Sub(Super):
pass
a = Super("Nice_Name")
print(a.__dict__.keys())
但是我想在不创建实例的情况下获取该信息,仅为了内省。有办法吗?
从内省的角度来看,有一种方法可以在不创建实例的情况下获取类实例变量。创建实例时很容易:Python类实例自省
class Super:
def __init__(self, name):
self.name = name
class Sub(Super):
pass
a = Super("Nice_Name")
print(a.__dict__.keys())
但是我想在不创建实例的情况下获取该信息,仅为了内省。有办法吗?
不,你不能,因为python不是statically typed language,所以在一个对象被实例化之前,该对象没有类型。例如,想像这样的一类:
class A:
def __init__(self):
self.a = "a"
def change_type(self):
self.a = 1
会的self.a
类型是什么对象实例之前?如果你需要反省,你不能使用python。
仅仅因为这不是一个答案,或者是一个只有链接的答案。把这作为评论。只要看看其他人对这个问题的评论:他们更长,更具建设性。 SO规则,对不起 –
@Apero我不同意。他的问题完全由此得到了回答,并且链接是澄清什么是静态类型的语言,并且自我并不回答他的问题。 – Natecat
确实,所以这应该是一个评论,而不是一个答案;-) –
查看http://stackoverflow.com/questions/109087/how-to-get-instance-variables-in-python – jonrsharpe
如果他们没有实例,它们的值是什么? – Natecat
问题是,类实例在分配之前根本没有任何属性;班级不会“宣布”他们。 '__init__'仅仅为实例第一次创建后即时创建的属性赋值。本质上,你要求模拟'__init__'的执行。 – chepner