![](/img/trans.png)
[英]Python - Instantiating a class without assigning a name to the instance
[英]Check if instance of python class has attribute without instantiating the class
是否可以在不(能够)实例化类的情况下检查类的实例是否具有属性?
例子:
我缺乏关于实例化参数的知识A
类:
class A:
def __init__(self, unkown):
self.a = 1
检查 A 类中的属性 a 失败:
hasattr(A,'a')
>> False
检查类A
实例中的属性 a 会成功:
hasattr(A(1),'a')
>> True
是否可以在不实例化A
的情况下检查属性a
? 也许与hasattr
不同的东西?
一般来说,这是不可能的。 您可以随时在A
的任何实例上自由设置任何属性。 考虑
a = A('foo')
setattr(a, input('attr_name: '), 'bar')
A
无法知道将来可能会或可能不会在其实例上设置哪些属性。
如果您想将问题限制在__init__
中设置的属性,您可以做一些疯狂的事情,例如解析__init__
,但很可能我们在这里遇到了 XY 问题。
由于这是不可能的,解决方法可以是创建a
属性:
class A:
def __init__(self, unkown):
self._a = 1
@property
def a(self):
return self._a
hasattr(A,'a')
>> True
只是为了完整性而将其留在这里
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.