揭秘:Python中的“self”

liftword4周前 (04-05)技术文章18

在在类方法中,可以通过一个特殊参数(按照惯例称为 self)来引用实例。self 始终是实例方法的第一个属性。下面介绍一下如何不仅可以与所有实例共享属性,还可以共享方法

# oop/class.self.py 
class  Square : 
  side = 8 
  def  area ( self ): # self 是对实例的引用
    return self.side ** 2
 sq = Square() 
print (sq.area()) # 64 (在类上找到边)
print (Square.area(sq)) # 64 (相当于 sq.area())
 sq.side = 10 
print (sq.area()) # 100 (在实例上找到边)

注意 sq 如何使用 area 方法。这两个调用 Square.area(sq) 和 sq.area() 是等效的,并告诉该机制是如何工作的。要么将实例传递给方法调用 (Square.area(sq)),该方法在方法中将采用名称 self,要么可以使用 sq.area()

# oop/class.price.py 
class  Price : 
  def  Final_price ( self, vat,discount= 0 ): 
  """应用增值税和固定折扣后返回价格。""" 
  return (self.net_price * ( 100 + vat) / 100 ) - 折扣
p1 = Price() 
p1.net_price = 100 
print (Price.final_price(p1, 20 , 10 )) # 110 (100 * 1.2 - 10) 
print (p1.final_price( 20 , 10 )) # 等效

可以声明方法时使用参数。可以使用与函数完全相同的语法,但需要记住,第一个参数始终是该方法将绑定到的实例。不一定需要称其为 self,一般约定使应用self。

相关文章

如何理解Python类中的self?

许多python初学者,在接触到python面向对象的时候,就被类中包含的方法中的self打败了,不知道self是何物?既然写在方法中,是必须参数,为何在调用方法的时候不给它传参数还能正常运行?和我们...

读懂python中的self

一、self的作用self指的是调用该函数的对象(是一个实例)。Python中self等价于Java中的this。首先明确的是self只有在类中的方法中才会有,独立的函数或方法是不必带有self的。例...

python类杂谈,self 到底是什么

在python中,无论是在__init__方法,还是自定义的方法中,他们都必有第一个参数 self初学者可能会对这个参数很迷惑,这个参数好像没啥用,毕竟又不需要传参,每次定义函数又必须写上,你可能会觉...

Python 中的 self 是啥?这是面试绕不过去的点!

说到面试 Python,self 绝对是“高频题”。别小看它,这玩意儿是面向对象编程里非常核心的概念。简单来说,self 就是方法绑定到实例的桥梁,用来指代“当前对象”。为啥离不开 self?你写类的...

Python类中的self到底是干啥的

Python编写类的时候,每个函数参数第一个参数都是self,一开始我不管它到底是干嘛的,只知道必须要写上。后来对Python渐渐熟悉了一点,再回头看self的概念,似乎有点弄明白了。首先明确的是se...