Python中self的用法

枫铃3年前 (2021-09-30)Python234

在Python类中规定,函数的第一个参数是实例对象本身,并且约定俗成,把其名字写为self。其作用相当于java中的this,表示当前类的对象,可以调用当前类中的属性和方法。

在python中,类是通过关键字 class 定义的:

1、class 后面紧跟类名,紧接着是(object),表示该类是从哪个类继承下来的,通常,如果没有合适的继承类,就使用 object 类,这是所有类最终都会继承的类。

class Personobject:  
  pass

2、将 Person类实例化,创建实例化是通过 类名+() 实现的。

'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:579817333 
'''

class Person(object):  
  pass
student = Person()  # 创建类的实例化
print(student)
print(Person)

3、给实例变量绑定属性

比如:为 student 绑定 name 和 sex属性

class Person(object):  
  pass
student = Person()
# print(student)
# print(Person)
student.name = "Gavin"   # 为实例变量 student 绑定 name 属性,类似于赋值操作
student.sex =# 为其绑定 score 属性
print(student.name)
print(student.sex)

上述的方法虽然可以为类的实例变量绑定属性,但是不够方便。

由于类 可以起到模板的作用,所以在创建实例的时候,可以将我们认为必须绑定得属性强制填写进去,在python中,是通过类中通常都会使用的一个方法,即def __init__(self)方法,在创建实例变量的时候,就把 name 和 sex等属性绑上去。

class Person(object):  
  def __init__(self,name,sex):    
    self.name = name    
    self.sex = sex    
student = Person('Gavin',)  # 传入 __init__ 方法中需要的参数
print(student.name)
print(student.sex)

传入空参数的情况,会报错:

'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:579817333 
'''

class Person(object):  
  def __init__(self,name,score):    
    self.name = name    
    self.sex = sex   
student = Person()   # 此处应该有参数传入,却没有传
print(student.name)
print(student.sex)

注意:

1、__init__方法的第一个参数永远是 self ,表示创建的实例本身,因此,在 __init__方法的内部,就可以把各种属性绑定到 self,因为 self 就指向创建的实例本身。

2、使用了 __init__方法,在创建实例的时候就不能传入 空的参数了,必须传入与 __init__方法匹配的参数,但是 self 不需要传,python解释器会自己把实例变量传进去。

class Person(object):  
    def __init__(self,x,y):    
        self.x = x    
        self.y = y      
    def add(self):    
        sum = self.x + self.y    
        return sum    
    def square(self):    
        squr = pow(self.x,2)+pow(self.y,2)    
        return squr  
    def add_square(self):    
        c = self.add()+self.square()    
        return c    
student = Person(3,4)
print(student.add())
print(student.square())
print(student.add_square())

运行结果:

在这里插入图片描述

通过上述的例子可以看出,与普通的函数相比,在类中定义的函数只有两点不同:

1、第一个参数永远是 self ,并且调用时不用传递该参数

2、在类中函数相互调用要加 self ,如上例中: c = self.add()+self.square(), 不加 self ,会报错

相关文章

利用python同步windows和linux文件

写python脚本的初衷,每次在windows编辑完文件后,想同步到linux上去,只能够登录服务器,...

爬虫基本原理

爬虫基本原理 一、爬虫是什么? 百度百科和维基百科对网络爬虫的定义:简单来说爬虫就是抓取目标网站内容的工具,一般是根据定义的行...

Django 函数和方法的区别

函数和方法的区别 1、函数要手动传self,方法不用传 2、如果是一个函数,用类名去调用,如果是一个方法...

Django 知识补漏单例模式

单例模式:(说白了就是)创建一个类的实例。在 Python 中,我们可以用多种方法来实现单例模式&#x...

Django基础知识MTV

Django简介 Django是使用Python编写的一个开源Web框架。可以用它来快速搭建一个高性能的网站。 Django也是一个MVC框架。但是在Dj...

Python mysql 索引原理与慢查询优化

一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。