假设我有以下代码:
class abc():
def __init__(self):
self.a = 0
def somefunc(var):
pass
if __name__ == "__main__":
aaa = abc()
somefunc(aaa.a)
现在我的问题是,如果我只有属性,有一种方法可以通过传递给“ somefunc”的属性(a)获取类(aaa)的实例?换句话说,要从属性转到他的班级。
我知道这样做并不受欢迎,但是我有些情况迫使我这么做。
谢谢您的帮助!!!!
答案 0 :(得分:3)
答案是否定的。
假设我有以下代码:
class abc():
def __init__(self):
self.a = []
def somefunc(var):
pass
if __name__ == "__main__":
aaa = abc()
bbb = abc()
bbb.a = aaa.a
somefunc(aaa.a)
现在somefunc应该确定应该引用aaa还是bbb吗?
答案 1 :(得分:0)
如果确实愿意,您可以,但我不建议这样做。
class abc():
def __init__(self,a):
self.a = a
def somefunc(value):
vars_dict = globals() # swap this for whatever dictionary of variables you wish to use
abcs = [vars_dict[i] for i in vars_dict if isinstance(vars_dict[i],abc)]
return [instance for instance in abcs if instance.a == value]
if __name__ == "__main__":
instance1 = abc(1)
instance2 = abc(2)
instance3 = abc(1)
print('1s: {}'.format(str(somefunc(1))))
print('2s: {}'.format(str(somefunc(2))))
print('3s: {}'.format(str(somefunc(3))))
这会从vars_dict
抓取与instance.a == value
在一起的所有实例。我已经在这里实现了globals()dict,但是您可以根据需要将其替换为另一本词典。
享受!
答案 2 :(得分:0)
您可以将实例用作参数。
class abc():
def __init__(self, num):
self.a = num
def somefunc(var):
print(var.a)
if __name__ == "__main__":
aaa = abc(2)
somefunc(aaa)
bbb = abc(4)
somefunc(bbb)