Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
401 views
in Technique[技术] by (71.8m points)

python类中有没有魔术方法可以在该实例对象调用不存在的对象方法的时候触发呢

在php的情况下,如果是调用了不存在的实例方法,会调用 __call

如果是python的话,当调用了不存在的实例方法,有什么魔术方法会被触发吗?

如果是没有,有没有比较好的方式手动设置触发条件,在调用不存在的实例方法的时候出发,除了 抛异常


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

有的。

访问Python对象实例的成员的时候,如果在一般位置找不到该成员,则会调用类的__getattr__方法。你可以在类里显示定义这个方法,来定义你希望的行为。

这个方法可以返回一个值,或者抛出一个AttributeError异常。

另外还有一个__getattribute__方法,每次访问实例成员的时候都会触发,具体可以参考官方文档


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...