鱼C论坛

 找回密码
 立即注册
查看: 1472|回复: 2

[已解决]python类学习

[复制链接]
发表于 2020-8-30 21:09:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#刚开始学到类这一章节,

python的类中,是个变量,就要套一个                self.变量名      在什么情况下可以不套用self,直接上变量名????
import random as r
class Fish:
    def __init__(self):
        self.x=r.randint(0,10)           
        self.y=r.randint(0,10)
最佳答案
2020-8-30 21:23:36
本帖最后由 Twilight6 于 2020-8-30 21:29 编辑


类体中,所有函数之外:此范围定义的变量,称为类属性或类变量;

类体中,所以函数内部:以“self.变量名”的方式定义的变量,称为实例属性或实例变量;

类体中,所有函数内部:以“变量名=变量值”的方式定义的变量,称为局部变量;


关于类中的变量,可以看看这个笔记: http://note.youdao.com/noteshare ... E619E7E6F44BD603893

在什么情况下可以不套用self,直接上变量名????


看你想定义的是类变量还是局部变量,类变量是所有实例可以共用的,只要类变量改变,所有实例查找到的类变量值也会改变

而如果你想定义的是局部变量,那么就是这个变量只在这个作用域有用到,其他地方不用就可以定义 局部变量

而 self 带头的是实例变量,是在整个实例空间都可以用的,当你在其他方法中要使用这个变量就需要定义这样的变量,而且是每个实例对象是独立的实例属性,每个实例互不影响
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-30 21:14:30 | 显示全部楼层
本帖最后由 1q23w31 于 2020-8-30 21:16 编辑

加self的为实例属性
不加的属性,为类属性

具体看这个:https://www.liaoxuefeng.com/wiki/1016959663602400/1017594591051072
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-8-30 21:23:36 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-8-30 21:29 编辑


类体中,所有函数之外:此范围定义的变量,称为类属性或类变量;

类体中,所以函数内部:以“self.变量名”的方式定义的变量,称为实例属性或实例变量;

类体中,所有函数内部:以“变量名=变量值”的方式定义的变量,称为局部变量;


关于类中的变量,可以看看这个笔记: http://note.youdao.com/noteshare ... E619E7E6F44BD603893

在什么情况下可以不套用self,直接上变量名????


看你想定义的是类变量还是局部变量,类变量是所有实例可以共用的,只要类变量改变,所有实例查找到的类变量值也会改变

而如果你想定义的是局部变量,那么就是这个变量只在这个作用域有用到,其他地方不用就可以定义 局部变量

而 self 带头的是实例变量,是在整个实例空间都可以用的,当你在其他方法中要使用这个变量就需要定义这样的变量,而且是每个实例对象是独立的实例属性,每个实例互不影响
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 03:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表