跳至正文
View Categories

< 1 min read

主要内容 #

  • self用法
  • self详解
  • 1. self用法 #

    在定义类的过程中,无论是类的构造方法,还是类中的实例方法,都要求将 self 参数作为方法的第一个参数。
    例如,定义一个 Person 类:

    class Person: #定义一个人类
    
        def __init__(self, name, age, weight): # __init__函数,实例化时为每个实例定制自己的属性
            self.name = name
            self.age = age
            self.weight = weight
    	
        def think(self, a, b):  #人都可以思考,该方法的第一个参数一定是self,表示自己的实例
            print(self.name, '在思考:', a,' + ',b,' = ',a+b) #通过self调用自己实例的属性
    
    Someone = Person('小杰', 18, 60)  #创建对象
    Someone.think(10,100)   #访问类对象的方法

    2. self详解 #

    self 参数的具体作用是同一个类可以产生多个对象。
    当某个对象调用类方法时,该对象会把自身的引用作为第一个参数自动传给该方法。
    换句话说,Python会自动绑定类方法的第一个参数指向调用该方法的对象。
    如此,Python解释器就能知道到底要操作哪个对象的方法了。

    例如,如下代码创建了名为 Person 的类,并对其进行了实例化:

    class Person: #定义一个人类
    
        def __init__(self, name): # __init__函数,实例化时为每个实例定制自己的属性
            self.name = name # 实例属性,表示定义的实例有自己的name
    
        def myself(self):
            print("this is my self:", self) 
    
    Someone_1 = Person(name="小杰")
    print("小杰: ", Someone_1)
    Someone_1.myself()
    
    print()
    
    Someone_2 = Person(name="大杰")
    print("大杰: ", Someone_2)
    Someone_2.myself()

    上面代码中,myself() 中的 self 代表该方法的调用者,即谁调用该方法,那么 self 就代表谁。
    因此,该程序的运行结果为:

    小杰:  <__main__.Person object at 0x00000156A44D8400>
    this is my self: <__main__.Person object at 0x00000156A44D8400>
    
    大杰:  <__main__.Person object at 0x00000156A4517EE0>
    this is my self: <__main__.Person object at 0x00000156A4517EE0>

    3. 小结 #

    • 类中的实例属性和实例方法的第一个参数必须是self
    • self表征的是当前实例,这样类就能区分当前的实例的内容

    习题 #