python class __init__中判断条件如何终止后续方法?

问答:python class如何终止方法执行?
前面提出了个问题,有大神回答了
但是如果没有对象的情况下应该怎么写?简单就是下面class能否再简化下

class Test:
    def __init__(self):
        self.status=status

    def get(self,text):
        if self.status=='err' :return False
        print(text)

    def set(self,text):
        if self.status=='err' :return False
        print(text)

    def xxx(self,text):
        if self.status=='err' :return False
        print(text)
status='ok'
Test().get('okokokl')
status='err'
Test().set('err')

方法如果多的话,要写很多的if self.status==’err’ :return False

最佳答案

@Jason990420 对象没有参数 方法是否执行由init里面计算得出

3年前 评论
Jason990420 3年前
heavenm (作者) (楼主) 3年前
讨论数量: 7
Jason990420

没有对象 ? Test() 就是对象啊 ?

3年前 评论

用装饰器去将重复性的代码写一下,然后在每个需要该功能的函数外层装饰它。你应该问的就是这个意思吧?...😳

3年前 评论

@Jason990420 对象没有参数 方法是否执行由init里面计算得出

3年前 评论
Jason990420 3年前
heavenm (作者) (楼主) 3年前

@runstone 汗!这个好专业啊,我学习不够努力,装饰器是啥,语言理解还不够深!

3年前 评论
Jason990420

有关装饰器, 你可以参考一下这篇文章

Python 的装饰符

3年前 评论
class Test:
    def __init__(self):
        global status
        status='ok'

    def print(self,text):
        print(text)

    def __getattribute__(self, name):
        if status == 'err':
            if callable(object.__getattribute__(self, name)):
                return lambda *args, **kwargs: None
            else:
                return None
        return object.__getattribute__(self, name)



Test().print('okokokl')

非常完美的解决了,太感谢了,这里大神真多

3年前 评论

功能解决了,不过代码还有些看不懂,先用着,慢慢再学习学习!
太感谢了
Jason990420

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!