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

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

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

class Person(object):  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中self的用法相关推荐

  1. 五分钟理解yield在python中的简单用法,让你不再迷惑

    很多同学无论是在学习python还是使用python的过程中,都会遇到yield关键字,这个让人头大的问题,今天,就给大家分享一下我自学yield的心路历程 基本概念: (1)在 Python 中,使 ...

  2. format函数python的顺序_[转载] Python中format函数用法

    Python中format函数用法 format优点 format是python2.6新增的格式化字符串的方法,相对于老版的%格式方法,它有很多优点. 1.不需要理会数据类型的问题,在%方法中%s只能 ...

  3. python代码大全表解释-python中的字典用法大全的代码

    如下代码是关于python中的字典用法大全的代码. #!/usr/bin/env python # # [SNIPPET_NAME: Dictionaries 101] # [SNIPPET_CATE ...

  4. python教程实例-Python中函数的用法实例教程

    本文以数值计算为例讲述了Python中函数的用法,分享给大家供大家参考借鉴之用.具体如下: 我们都知道圆的面积计算公式为: S = πr2 当我们知道半径r的值时,就可以根据公式计算出面积.假设我们需 ...

  5. 详解python中的用法_详解python中*号的用法

    1.表示乘号 2.表示倍数,例如: def T(msg,time=1): print((msg+' ')*time) T('hi',3) 打印结果(打印3次): hi hi hi 3.单个 * (1) ...

  6. python中 str.strip()用法

    python中 str.strip()用法 1.描述 str.strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列. (即可以去除特殊字符串) 注意:该方法只能删除开头或是 ...

  7. Python中的del用法

    python中的del用法比较特殊,新手学习往往产生误解,弄清del的用法,可以帮助深入理解python的内存方面的问题. python的del不同于C的free和C++的delete. 由于pyth ...

  8. python中的super用法详解_【Python】【类】super用法详解

    一.问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A: def __init__(sel ...

  9. python中argv的用法

    python中argv的用法 sys.argv可以用来获取命令行参数,其中sys.argv[0]为脚本名,即python文件名,列表中的其他值为传入的参数值,一般定义方式为 script, arg1, ...

  10. python中max函数用法_Python中max函数用法实例分析

    Python中max函数用法实例分析 更新时间:2015年07月17日 15:45:09 作者:优雅先生 这篇文章主要介绍了Python中max函数用法,实例分析了Python中max函数的功能与使用 ...

最新文章

  1. JS 函数 函数递归
  2. Arduino 各种模块篇 光敏感应器 简易光敏
  3. python语言由ps f组织所有_python面试题100.docx
  4. Linux01-Linux高级特殊权限SUID详解25
  5. shell中获取单个文件大小
  6. C语言基础(6)-char类型
  7. windows杀死指定端口号
  8. python 一行_一行 Python 代码搞定炫酷可视化
  9. ACRush 楼天城回忆录
  10. python中英文字符和中文字符存储长度不同_Django如何正确截取中英混合字符串及表单中限制中文字符中长度...
  11. bootstrap table 搜索列formatter之后,单字节搜索异常
  12. 07 ansible 角色roles 整合多个剧本
  13. JZ1-二维数组中的查找
  14. c语言程序设计基础课本答案,c语言程序设计基础课后习题参考 答 案与解析.doc...
  15. 搜狗输入法关闭快捷键
  16. java实现ftp文件上传失败_用java+ftp实现文件上传的问题?
  17. gcc编译部分编译选项
  18. 使用jquery处理多选框checkbox选中和未选中的值
  19. 【Excel】Excel 等办公软件不能复制内容到其他区域
  20. 1812. 方形牧场

热门文章

  1. Java集成PageOffice在线打开编辑word文件 - Spring Boot
  2. ACE-Task结构介绍(二)——消息块ACE_Message_Block结构的分析
  3. Web存储机制—sessionStorage,localStorage使用方法
  4. web自动化测试之百度经验-HTTP层面的Web Service自动化测试
  5. 关于Ubuntu 使用PPPoe拨号上网,导致wifi没有错误。
  6. 用rate-limit来限制特定用户的流量
  7. 图解Oracle 11g physical standby Rolling Upgrade物理备库滚动升级特性
  8. 教你9招最有效防电脑辐射方法
  9. python规范化字符串_python中正确的字符串编码规范
  10. 【ABAP】在线预览文档对象的开发实现