文章目录

  • 一、python类中的self



一、python类中的self

在python中创建一个Student类。系统会给Student类开辟内存空间,会得到该类的地址。
1.类中没有__init__()方法时:

  • 其中name与age为类属性,study为类中的方法。创建student1对象,在创建对象时,会分配给student1一段地址,也就是student1其实等于的就是一串地址
  • 在代码中,study(self)方法里有一个参数为self,当创建的对象调用该方法时,传入到self位置的参数就是创建对象时student1所对应的地址
  • 因此,如果同时创建了两个对象,在分配内存空间时会分别给两个对象分配空间,因此不同对象调用方法时传递到self的值是不同的,但是都是分配该对象的地址,因此self实际上对应的就是所创建的对象。
class Student():
    name = "123"
    age = 20
    def study(self):
        print("正在学习...")

student1=Student()
print(student1.age)
student1.study()

2 当存在__init__()方法时:

  • 与上文所述的在创建对象时就把所分配的地址值赋给对象名不同,存在__init__()方法时:
  • 有创建对象请求,在内存中开辟空间,但此时不直接赋值到对象名
  • 回到Student类的空间执行__init__(self)程序,此时传入到self的就是刚刚得到的地址,执行完程序时再将地址赋给对象名,此时创建对象工作完成。
  • 总之,有__init__()方法时主要的就是该方法的执行时间。以及我写这些想让自己记住的就是在类中的self就是创建的对象。
class Student():
    def __init__(self):
        self.name = "123"
        self.age = 20
        print("我是一个学生。")

    def study(self):
        print("正在学习...")

student1=Student()
print(student1.age)
student1.study()

此外,使用__init__()方法的好处就是可以将写在该方法中的属性在创建对象时赋值给对象,这样不仅方便对象得到那些属性,更加方便对象对属性的修改。

简单记录一下笔记,只是记录了我所需要及我所知道的,水平有限,如有不到之处,欢迎批评指正。
学习的课程是在B站千峰教育python视频教程。
146课