Python 类变量,成员变量,静态变量,局部变量

python中类变量和成员变量、局部变量总结

转载自:https://www.cnblogs.com/clarenceyang/p/9685543.html
作者: 勿忘-前行

class Member():
    num=0 #类变量,可以直接用类调用,或用实例对象调用
    def __init__(self,x,y):
        self.x=x  #实例变量(成员变量),需要它是在类的构造函数内以self.开头来定义的
        self.y=y
        self.fuc(self.x,self.y)

    def add(self):
        total=2  #局部变量
        self.vara=3  # 虽是以self.给出,但并没有在构造函数中进行初始化
        self.varb=4
        fina=(self.x+self.y)*total
        return fina

    def fuc(self,a,b):
        self.varc=a #成员变量,他们在成员函数fuc()中定义,但是在构造函数中调用了fuc()函数
        self.vard=b#https://www.jb51.net/article/49402.html 同时可以一道区分学习python中的实例方法、静态方法、类方法、类变量和实例变量

Python 类变量,成员变量,静态变量,局部变量

转载自:https://www.cnblogs.com/ymjyqsx/p/7380279.html
作者:去做点事情

局部

class TestClass(object):
  val1 = 100
   
  def __init__(self):
    self.val2 = 200
   
  def fcn(self,val = 400):
    val3 = 300
    self.val4 = val
    self.val5 = 500
if __name__ == '__main__':
  inst = TestClass()
    
  print TestClass.val1
  print inst.val1  print TestClass.val2  #会报错。类不能访问成员变量
  print inst.val2
  print inst.val3      #会报错
  print inst.val4     #会报错
  print inst.val5    #会报错

val1是类变量,可以由类名直接调用,也可以由对象来调用;
val2是成员变量,可以由类的对象来调用,这里可以看出成员变量一定是以self.的形式给出的,因为self的含义就是代表实例对象;如果__init__内的变量没有加self,那就变成一个__init__的局部变量;
val3不是成员变量,它只是函数fcn内部的局部变量;
val4和val5是成员变量,但并没有初始化,所以这里会报错

这个是能正确运行的

class TestClass(object):
  val1 = 100
   
  def __init__(self):
    self.val2 = 200
   
  def fcn(self,val = 400):
    val3 = 300
    self.val4 = val
    self.val5 = 500
  

  def add(self):
    self.fcn()
    result = self.val4 + self.val5
    return result


if __name__ == '__main__':
  inst = TestClass()
  print inst.add()

这个是不能正确运行的,因为fcn是对val4,val5初始化,这里没运行fcn就没初始化

class TestClass(object):
  val1 = 100
   
  def __init__(self):
    self.val2 = 200
   
  def fcn(self,val = 400):
    val3 = 300
    self.val4 = val
    self.val5 = 500
  

  def add(self):
    # self.fcn()
    result = self.val4 + self.val5
    return result


if __name__ == '__main__':
  inst = TestClass()
  print inst.add()

概括的一个例子

class TestClass(object):
  val1 = 100
   
  def __init__(self):
    self.val2 = 200
   
  def fcn(self,val = 400):
    val3 = 300
    self.val4 = val
    self.val5 = 500
  

  def add(self):
    self.val4 = 1
    self.val5 = 2
    result = self.val4 + self.val5
    return result


if __name__ == '__main__':
  inst = TestClass()
  print inst.add()
  print inst.val4
  inst.fcn()
  print inst.val4

运行出来的结果:
在这里插入图片描述
可以看到,只要你对val4,val5初始化了就可以用实例访问,证明这个带self的是成员变量,不是局部变量。运行fcn后,对成员变量的值进行了改变。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,虽然没有完全静态的变量,但可以通过变量来实现似的功能。静态成员变量Python中被称为变量,可以通过名直接访问,也可以通过实例对象来访问。变量的定义中声明,并且在所有实例对象之间共享相同的值。 为了设置静态成员变量,需要在的定义中声明一个变量,并将其赋值为所需的值。这样,该变量就成为了变量,可以通过名或实例对象来访问。例如: ```python class MyClass: static_var = 10 # 静态成员变量 print(MyClass.static_var) # 通过名访问静态成员变量 my_obj = MyClass() print(my_obj.static_var) # 通过实例对象访问静态成员变量 ``` 输出: ``` 10 10 ``` 在上面的例子中,`static_var`被声明为变量,并赋值为10。然后,可以通过名或实例对象来访问这个静态成员变量。 需要注意的是,静态成员变量在所有实例对象之间共享相同的值。如果通过一个实例对象修改了静态成员变量的值,那么这个变化将会被所有实例对象所共享。 希望这个解答对你有帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python ——静态变量](https://blog.csdn.net/m0_61453287/article/details/122723562)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Python 变量成员变量静态变量局部变量](https://blog.csdn.net/BiBlioManiaa/article/details/106651285)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值