python中的实例变量的一些理解

本文深入探讨Python中实例变量的使用,解析在不同函数中定义实例变量的影响,以及如何正确调用它们,帮助读者理解变量初始化的重要性。

python中的实例变量不太同于java中的局部变量。在学python的时候,关于实例变量的使用,哪些地方可以调用它,弄得我头疼,今天终于有所领悟了;直接上代码:

  1. 在实例函数中定义实例变量
class Geen:
    def __init__(self):
        pass
    def fly1(self):
        self.width = 8
        self.height = 9
    def fly2(self):
        print(self.width)
        print(self.height)
c=Geen()
#c.fly1()
c.fly2()

这里会出错:

AttributeError: 'Geen' object has no attribute 'width'
  1. 在构造函数中定义实例变量的话,其他函数是可以直接调用该实例变量的

但是如果是在构造函数中定义实例变量的话,它又可以了,那就有点纳闷了

class Geen:
    def __init__(self):
        self.width = 8
        self.height = 9
    def fly1(self):
        pass
    def fly2(self):
        print(self.width)
        print(self.height)
c=Geen()
#c.fly1()
c.fly2()

输出的是:8 9

然后我就误以为只有在构造函数函数中定义的实例变量才可以用,其实我是错的,其实刚刚 1中的代码改下也可以用的:代码见下3:

class Geen:
    def __init__(self):
        pass
    def fly1(self):
        self.width = 8
        self.height = 9
    def fly2(self):
        print(self.width)
        print(self.height)
c=Geen()
c.fly1()
c.fly2()

输出也是8和9,这就是为什么1不能用的原因,只有你在实例函数中定义实例变量,其他函数调用的时候,要先调用含有定义实例函数先,再调用你的函数就可以了;其实就是个变量初始化问题,1就是程序运行的时候,你没调用实例函数先,程序会看不到的,要先调用才行。为什么在构造函数又可以呢?因为你定义类对象的时候会先调用构造函数。。。我真的是菜啊。记录一下吧,可以讲的有错,请各位大佬纠正!!!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值