国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python常见问题 > python里self是什么

python里self是什么

self

头像

silencement

2021-04-25 17:47:0410706浏览 · 0收藏 · 0评论

首先我们要搞明白Python的类中为要什么要用到self这个单词呢,为什么不用"zhangsan"、"lisi"这样的名字呢,这可定有他的用意。查Google翻译解释:

self
名词的解释:自;自我;自己

那么问题来了,这里的自己指代的到底是谁,下面听我详细分解。

分析

测试代码以一下这个代码及其它的扩充为基础,先贴代码,为了好理解,别说了半天不知道我在说什么。

class A():
    def song(one):
        print(one)
    def sing(self,one):
        print(one)

1、首先要搞清楚的一个问题 a=A()与a=A,这两个赋值之间的区别

a=A()
print(a)
a=A
print(a)
print(A)
结果如下:
<__main__.A object at 0x0000020A69C81780>
<class '__main__.A'>
<class '__main__.A'>
分析:
a=A()  是有地址的,这说明他是一个实体,比如 int a  中的 a 一样
a=A    是没有地址的,发现他和A打印的结果一毛一样,这说明他就是A,也就是一个类名,
等价于上一句中 int a 中的 int       
那么也就是说下面这两语句是等价的
b=A()   与   b=a()
------------------------------------------------------------------------
通过上面的分析,我们知道,a=A()相当于把 A 给实例化了,什么叫实例化呢,类比与 int a ,
int 什么都不能做,即 int 不能被赋值,不能进行算术操作等等,但是 a 可以(其实这里的 A 与 int
是一样的,追溯到C语言,类只不过是一种自定义的结构变量而已,只不过功能更加强大)。
那具体怎么个实例发呢?

2、self 到底指代的是谁

class A():
    def song(one):
        print(one)
    def sing(self,one):
        print(one)
a=A()
A.sing(a,"hello")  #注意这条语句
a.sing("hello")
打印结果:
hello
hello
-------------------------------
A.sing("hello")
错误信息:
TypeError: sing() missing 1 required positional argument: 'one'
提示没有给 one 赋值
--------------------------------
a.song("hello")
错误信息:
TypeError: song() takes 1 positional argument but 2 were given
那么问题来了,多给了一个什么参数,为什么会多给呢?
--------------------------------
把类A改一下
class A():
    def song(one,two):   #注意这里多给song了一个参数
        print(one)
a.song("hello")   //这里的参数  "hello"赋给了 two
print(a)
打印结果:
<__main__.A object at 0x0000020A69C39CC0>
<__main__.A object at 0x0000020A69C39CC0>
是不是很奇怪,为什么a.song("hello")返回的是  实例  a  的地址呢?

从这个例子中你就可以发现,实际上 a.sing(“hello”) 等价于 A.sing(a,“hello”),而self就是实例 a 自己,而且你发现 self ,也可以用别的单词来代替。

通过这段分析,我们简单的知道了,类中的方法第一个参数必须是 self ,不然实例无法正确调用类中的方法,也就是说,如果方法中第一个参数不是 self(广义的),那么这个方法是没有任何价值的,因为实例无法调用它,一个无法被调用的方法真不知道有什么用。

参数前面的 self

x=6
class A():
    def sing(self):
        self.x=10
    def mutl(self):
        y=10*x
        print(y)
a=A()  
a.mutl()

这里先猜一下结果,到底会打印 60 呢,还是 100 呢?要弄清这个问题,就要先弄清 mutl() 中的 x 到底是哪一个,先看结果在分析。

结果是:60

为什么不调用类内部的 x 参数而跑去调用类外的 x 呢?还是那个问题,self 到底指代的是谁,self 就是 a 本身,那么问题就很明显了,mutl() 方法中的 x 前面没有加 self 所以他调用的不是实例(注意这里说的是实例,而不是类)自身的参数。

到这里我想你大概明白了,参数前面有self和没self的区别了,简单说,带self的参数是人家实例自身的,不带self的,爱谁谁,实例不管。

self相关内容推荐阅读:

self在函数中使用

python什么时候加self?

更多python学习,欢迎使用python学习网,免费学习python,还可以观看免费视频教程。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

脱裤子打女孩子屁股打多久才会肿| 午夜成人理论片A片AAA软件| 皇空无限MV国产剧入选精彩| 女仆装| 快拨出天我是你母亲歌词监控| 小洞流口水了 是不是饿了| 人犬兽人在线观看免费完整一| 下面的小嘴又饿了| 《法国空乘9》| 《不戴套瑜伽教练3》| 泡妞网站| 国产麻豆剧传媒精品国产AV| 麻豆传媒| 吃瓜| 请满四合院免费观看全集电视剧| 女兒亂倫在线观看| 榨精病栋| 儿子双飞妈妈和女儿的小说 | 麻花传剧原创MV视频免费| 干爹你真棒插曲免费看| 起死回生电影| 女被扒开腿狂躁XXXXX视频| 《卻望1973》娃娃脸| 自慰是什么| 15岁女初中生免费观看电视剧| 女主被兄弟三人轮流欺负的小说| 看到老妈洗澡忍不住怎么办| 林柔柔在厨房被C高潮| 农场一母四女一婿胡本兴小说| 儿子娶妈妈免费观看完整版| 王叔我老公还在客厅呢什么小说 | 麻花传媒的短视频制作技巧和方法 | 游览器| 小洞流口水了 是不是饿了 | 《艾娃》法国| 妈妈的朋友2| 麻花星空传剧原创MV在线| 三个老头拥着躁我一晚| 初中小姐姐脚丫踩在男生困困| 丫头把腿开大让我添添| 《好好疼爱里面》免费看