关于self的问题
class Ball():def Setname(self,name):
return name
def kick(self):
print('我叫%s,该死的,谁踢我'%self.name)
class Ball():
self.name='小甲鱼'
def kick(self):
print('我叫%s,该死的,谁踢我'%self.name)
为什么这两个会报错?关于self还是不太懂 本帖最后由 Twilight6 于 2020-6-11 11:57 编辑
第一个代码:
你参数传入的 name 变量是局部变量,你要通过赋值给 self.name 才能在其他方法内使用:
class Ball():
def Setname(self, name):
self.name = name
return self.name
def kick(self):
print('我叫%s,该死的,谁踢我' % self.name)
第二个代码:
带self的属性 是实例属性,要在方法内,不能写在方法外,方法外写的是 类属性,而不是实例属性
class Ball():
name = '小甲鱼'# 属于类属性
def kick(self):
print('我叫%s,该死的,谁踢我' % Ball.name) # 这边的Ball.name 就是调用Ball内的类属性
关于self还是不太懂
self 简单的理解就是被实例的对象,举个例子当你写了一个类 比如 A 类 你实例化 A类:
a = A()
这个时候 a 就代表 方法里面的 self 参数,你当你调用这个实例化对象的属性 a.name 也就是 self.name此时的 self = a
分享下我当时网上整理的笔记:
类、实例、局部变量
本帖最后由 1223253411 于 2020-6-11 11:56 编辑
你的关注点错了
这不是self的错
第一个:self.name完全不知道是什么,字面意义上的,根本不存在,为什么,没创建这个变量。
第二个: 类变量,直接在类的下面创建的就是类变量,self纯粹就是语法报错,就像你在随便哪个地方都不能用 点 ,点啊,下划线OK
你想知道self是什么,你得先了解 def __init__(self) 这个初始化函数,不然我相信很难为你解释什么是self是什么,因为self是对象的本身,好了 ,停,等你知道了对象的初始化在去细想一下,那就会变得通俗了
页:
[1]