c语言编程笔录

首页 >   > 笔记大全

笔记大全

如何理解Python中的self

更新时间:2023-12-16

第一段:self的概念和作用

在Python中,self是类中一个很重要的概念,通常作为第一个参数出现在类中的方法中。self代表的是当前对象,给类中的方法提供对当前对象的访问权限,可以用来访问对象的属性、执行对象的方法等。举个例子:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def get_name(self):
        return self.name

person = Person('Tom', 18)
name = person.get_name()
print(name) # 输出 ‘Tom’

在上面的代码中,我们创建了一个Person类,并且在实例化时传入了name和age两个参数,然后在get_name方法中通过self来访问name属性,最后返回name的值。在主函数中,我们创建了一个Person对象person,并调用它的get_name方法来获取它的名字(name)。

第二段:self的用法

除了在类的方法中使用以外,self也可以在类中其它的地方使用。比如下面这个例子,我们定义了一个类变量total_count和一个类方法get_total_count,该方法可以获取所有实例中共有的total_count数量:

class Person:
    total_count = 0

    def __init__(self, name, age):
        self.name = name
        self.age = age
        Person.total_count += 1

    @classmethod
    def get_total_count(cls):
        return cls.total_count

person1 = Person('Tom', 18)
person2 = Person('Eric', 20)
count = Person.get_total_count()
print(count) # 输出 ‘2’

在这个例子中,我们使用了self.total_count来访问类变量total_count,并且在初始化方法中每次创建一个新的Person对象就会增加total_count的值。同时,我们也定义了一个类方法get_total_count,该方法可以通过cls.total_count来访问类变量total_count并返回它的值。在主函数中,我们创建了两个Person对象person1和person2,然后调用Person.get_total_count()方法来获取当前所有实例的共有total_count值。

第三段:self与继承关系

在Python中,类是可以继承的,如果一个类继承了另一个类,那么子类会继承父类的所有属性和方法,包括self参数。下面的例子演示了继承关系下的self:

class Animal:
    def __init__(self, name):
        self.name = name

    def say_hello(self):
        print('Hello, I am a %s.' % self.name)

class Dog(Animal):
    def __init__(self, name):
        super().__init__('Dog')
        self.name = name

dog = Dog('Bill')
dog.say_hello() # 输出 ‘Hello, I am a Dog.’

在上面例子中,我们定义了一个Animal类和一个Dog类,其中Dog类继承了Animal类。在Animal类的构造方法中,我们使用了self.name来初始化一个实例变量name,在say_hello方法中,我们同样也用了self来访问这个实例变量name。在Dog类中,我们重写了构造方法,并在其中调用了父类的构造方法通过super()来实现,然后又定义了一个name变量覆盖了父类的name变量。最后,我们实例化了一个Dog对象dog,调用了它的say_hello()方法,输出结果为 ‘Hello, I am a Dog.’。

第四段:总结

在Python中,self是一个很重要的概念,它代表了当前的对象,可以在类中的方法中使用,也可以在类中其它的地方使用。通常作为第一个参数传入,给方法提供对当前对象的访问权限,可以用来访问对象的属性、执行对象的方法等。同时,在类继承的关系下,子类可以继承父类的self参数,它在访问父类的属性和方法时也可以正常使用。要理解self,需要熟悉Python的面向对象编程思想,并在实践中不断积累经验。