只在属性不存在时使用__setattr__
如果在一个类里重写了魔法方法 __getattr__
,那么只有在找不到某个属性的时候,这个重写的方法才会被调用;如果属性存在,就会执行默认的行为。
但是对于 __setattr__
来说,情况就不一样了,它会影响到所有的属性。
我想要的是一种行为:当属性存在时,正常处理;当属性不存在时,执行一些自定义的代码。还有,怎么在 __setattr__
中调用 super
呢?
2 个回答
7
当然可以!请看下面的内容:
在编程中,有时候我们需要把一些数据从一个地方传到另一个地方。这个过程就像把水从一个水壶倒到另一个水壶一样。我们可以使用不同的方法来完成这个任务,比如通过函数、变量或者其他工具。
有些时候,数据在传输的过程中可能会出现问题,就像水壶的嘴太小,水倒不出来一样。这时候我们就需要找到解决办法,确保数据能够顺利地传递。
此外,编程中还有很多不同的语言和工具,每种都有自己的特点和用法。就像不同的水壶有不同的形状和材质,但最终都是用来装水的。
总之,理解数据如何在程序中流动是编程的基础,掌握这些基本概念后,你会发现编程其实并没有那么复杂。
希望这些解释能帮助你更好地理解编程的基本概念!
class ClassName(object):
def __setattr__(self, name, value)
if hasattr(self, name):
super(ClassName, self).__setattr__(name, value)
else:
magic
2
你可以使用一个自定义的 __getattr__
方法来检查某个属性是否存在。
如果你想用默认的方式来设置这个属性,可以参考这样做:
object.__setattr__(self, name, value)