揭开Python中的'self'参数的神秘面纱

自由坦荡的智能 2025-03-10 00:36:08

Python可以通过一个特殊的参数来引用一个实例,按照约定俗成,称为 self。self 始终是实例方法的第一个属性。让我们一起研究一下这种行为,以及如何不仅共享属性,而且与所有的实例es 共享方法

# oop/class.self.pyclass Square: side = 8 def area(self): # self is a reference to an instance return self.side ** 2sq = Square()print(sq.area()) # 64 (side is found on the)print(Square.area(sq)) # 64 (equivalent to sq.area())sq.side = 10print(sq.area()) # 100 (side is found on the instance)

不知道sq 是如何使用 area 方法的。Square.area(sq) 和 sq.area() 这两个调用是等效的,它们告诉该机制是如何工作的。您可以将实例传递给方法调用 (Square.area(sq)),该方法在方法中将采用名称 self,或者您可以使用语法 sq.area(),Python 将在后台翻译。

# oop/class.price.pyclass Price: def final_price(self, vat, discount=0): """Returns price after applying vat and fixed discount.""" return (self.net_price * (100 + vat) / 100) - discountp1 = Price()p1.net_price = 100print(Price.final_price(p1, 20, 10)) # 110 (100 * 1.2 - 10)print(p1.final_price(20, 10)) # equivalen

前面的代码表明,在声明方法时,没有什么可以阻止我们使用参数。可以使用与函数完全相同的语法,但需要记住,第一个参数将始终是方法将绑定到的实例。不需要非得称它为自我,但这是约定俗成的,这是为数不多的遵守它非常重要的情况之一。

0 阅读:9

自由坦荡的智能

简介:感谢大家的关注