在 class 对象上实现 __contains__ 方法
Implement __contains__ method on class object
我正在尝试编写一个class,其主要目的是封装,我希望它是单个实例。
class ACN(object):
@classmethod
def get_acn_certs(cls):
pass
@classmethod
def get_suppporting_cert(cls, domains):
pass
@classmethod
def __contains__(cls, item):
return True
3 in ACN
当我 运行 上面的脚本时,它在最后一行给出了以下错误。
我怎样才能在这里实现__contains__
方法
3 in ACN TypeError: argument of type 'type' is not iterable
命令“ACN 中的 3”将不起作用,因为您已经声明了一个 class 但没有创建它的实例。
如果你想创建一个 class 的单一实例,我邀请你阅读一些关于 Singleton pattern 的内容。
下面是 Singleton pattern on python 的更多信息。
然后,您将能够将 'get_instance()' 之类的方法用于局部变量并使用它。
当您从 class 创建对象时,它会自动继承对象 class 并具有 contains 方法。我很想更好地理解您为什么需要它?
Magicmethods 仅在对象的 class 上查找(将它们声明为 class 方法不会在此处改变任何内容),因此当您执行 3 in ACN
、python在ACN
(元class)的class上搜索__contains__
(或__getitem__
)方法,这是内置的type
class。如果你想使用 ACN class 作为实例并使用 magicmethods,你必须使用自定义 metaclass 并在其上定义 magicmethods:
class ACNType(type):
def __contains__(cls, item):
return True
class ACN(metaclass=ACNType):
# your other methods here
我正在尝试编写一个class,其主要目的是封装,我希望它是单个实例。
class ACN(object):
@classmethod
def get_acn_certs(cls):
pass
@classmethod
def get_suppporting_cert(cls, domains):
pass
@classmethod
def __contains__(cls, item):
return True
3 in ACN
当我 运行 上面的脚本时,它在最后一行给出了以下错误。
我怎样才能在这里实现__contains__
方法
3 in ACN TypeError: argument of type 'type' is not iterable
命令“ACN 中的 3”将不起作用,因为您已经声明了一个 class 但没有创建它的实例。 如果你想创建一个 class 的单一实例,我邀请你阅读一些关于 Singleton pattern 的内容。 下面是 Singleton pattern on python 的更多信息。 然后,您将能够将 'get_instance()' 之类的方法用于局部变量并使用它。 当您从 class 创建对象时,它会自动继承对象 class 并具有 contains 方法。我很想更好地理解您为什么需要它?
Magicmethods 仅在对象的 class 上查找(将它们声明为 class 方法不会在此处改变任何内容),因此当您执行 3 in ACN
、python在ACN
(元class)的class上搜索__contains__
(或__getitem__
)方法,这是内置的type
class。如果你想使用 ACN class 作为实例并使用 magicmethods,你必须使用自定义 metaclass 并在其上定义 magicmethods:
class ACNType(type):
def __contains__(cls, item):
return True
class ACN(metaclass=ACNType):
# your other methods here