Python编写类的时候,每个函数参数第一个参数都是self,一开始我不管它到底是干嘛的,只知道必须要写上。后来对Python渐渐熟悉了一点,再回头看self的概念,似乎有点弄明白了。
首先明确的是self只有在类的方法中才会有,独立的函数或方法是不必带有self的。self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。
self名称不是必须的,在python中self不是关键词,你可以定义成a或b或其它名字都可以,但是约定成俗(为了和其他编程语言统一,减少理解难度),不要搞另类,大家会不明白的。
下例中将self改为myname一样没有错误:
class Person: def _init_(myname,name): myname.name=name def sayhello(myname): print 'My name is:',myname.name p=Person('Bill') print p
self指的是类实例对象本身(注意:不是类本身)。
class Person: def _init_(self,name): self.name=name def sayhello(self): print 'My name is:',self.name p=Person('Bill') print p
在上述例子中,self指向Person的实例p。 为什么不是指向类本身呢,如下例子:
class Person: def _init_(self,name): self.name=name def sayhello(self): print 'My name is:',self.name p1=Person('Bill') p2 = Person('Apple') print p1
如果self指向类本身,那么当有多个实例对象时,self指向哪一个呢?
总结
self在定义时需要定义,但是在调用时会自动传入。
self的名字并不是规定死的,但是最好还是按照约定是用self
self总是指调用时的类的实例。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍浅谈PHP中单引号和双引号到底有啥区别呢?,包括了浅谈PHP中单引号和双引号到底有啥区别呢?的使用技巧和注意事项,需要的朋友参考一下 在PHP中,字符串的定义可以使用英文单引号' ',也可以使用英文双引号" "。 但是必须使用同一种单或双引号来定义字符串,如:'Hello World"和"Hello World'为非法的字符串定义。 单引号和双引号到底有啥区别呢? PHP允许我们在双
本文向大家介绍浅谈Python中的数据类型,包括了浅谈Python中的数据类型的使用技巧和注意事项,需要的朋友参考一下 数据类型: Float/Int: 运算符: / — 浮点运算除 // — 当结果为正数时,取整; 11//5 =2; 11//4 = 2 当结果为负数时,向下取整;-11//5=-3; -11//4=-3 当分子分母都是float,结果为float型 ** — 计算幂; 11
本文向大家介绍浅谈python中频繁的print到底能浪费多长时间,包括了浅谈python中频繁的print到底能浪费多长时间的使用技巧和注意事项,需要的朋友参考一下 最近在做FLY量化交易系统的维护,总有客户说策略执行好慢,结果有些人展示策略一看,每个语句后边都要打印下数据。 哪些数据都是辅助用的,打印出来能当饭吃么,净浪费时间了 今天简单展示下print到底能消耗多少时间 例子: 结果: ..
本文向大家介绍浅谈python中的变量默认是什么类型,包括了浅谈python中的变量默认是什么类型的使用技巧和注意事项,需要的朋友参考一下 1、type(变量名),输出的结果就是变量的类型; 例如 >>> type(6) <type 'int'> 2、在Python里面变量在声明时,不需要指定变量的类型,变量的类型是动态指定的;>>> x=5 >>> type(x) <type 'int'> >>
本文向大家介绍浅谈python之新式类,包括了浅谈python之新式类的使用技巧和注意事项,需要的朋友参考一下 前言 本文中代码运行的python版本一律采取2.7.13 科普: 经典类:classic class 新式类:new-style class python2.2 之前并没有新式类 python2.2-2.7 新式类与经典类并存, 默认使用经典类, 除非显式继承object python
本文向大家介绍浅谈python numpy中nonzero()的用法,包括了浅谈python numpy中nonzero()的用法的使用技巧和注意事项,需要的朋友参考一下 nonzero函数返回非零元素的目录。 返回值为元组, 两个值分别为两个维度, 包含了相应维度上非零元素的目录值。 以上这篇浅谈python numpy中nonzero()的用法就是小编分享给大家的全部内容了,希望能给大家一个参