在python中实例变量在类的内部通过

提问人:闫淼时间:2021-09-03 09:11:46

最近对在python中实例变量在类的内部通过这个问题挺纠结,大家给我点建议。

3个回答
钟天杰

9.3.5.类和实例变量

一般来说,实例变量用于对每一个实例都是唯一的数据,类变量用于类的所有实例共享的属性和方法:

classDog:

kind='canine'#

def__init__(self,name):

self.name=name#

>>>d=Dog('Fido')

>>>e=Dog('Buddy')

>>>d.kind#

'canine'

>>>e.kind#

'canine'

>>>d.name#uniquetod

'Fido'

>>>e.name#uniquetoe

'Buddy'

正如在术语相关讨论的,可变对象,例如列表和字典,的共享数据可能带来意外的效果。例如,下面代码中的tricks列表不应该用作类变量,因为所有的Dog实例将共享同一个列表:

classDog:

tricks=[]#

def__init__(self,name):

self.name=name

defadd_trick(self,trick):

self.tricks.append(trick)

>>>d=Dog('Fido')

>>>e=Dog('Buddy')

>>>d.add_trick('rollover')

>>>e.add_trick('playdead')

>>>d.tricks#

['rollover','playdead']

这个类的正确设计应该使用一个实例变量:

classDog:

def__init__(self,name):

self.name=name

self.tricks=[]#

defadd_trick(self,trick):

self.tricks.append(trick)

>>>d=Dog('Fido')

>>>e=Dog('Buddy')

>>>d.add_trick('rollover')

>>>e.add_trick('playdead')

>>>d.tricks

['rollover']

>>>e.tricks

['playdead']

总结后的知识点希望能帮到你

廉通训

类变量也叫静态变量,也就是在变量前加了static的变量;实例变量也叫对象变量,即没加static的变量;区别在于类变量和实例变量的区别在于类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;例{=0;//类变量=0;//实力变量}{(String[]args){Aa1=newA;Aa2=newA;a1.a=3;//等同于A.a=3;a1.b=4;System.out.println(a2.a);//结果为3//类变量是针对所有对象的,所以a1改变a,a2的a也改变System.out.println(a2.b);//结果为0//实例只改变自身的,所以a1对象的b改变,不影响对象a2的b变量}}

晏静玲

类变量定义在类的定义之后,实例变量则是以为self.开头。例如

classFoo(object):

val1='aa'#类变量

def__init__(self):

self.val2='bb'#实例变量

val3='cc'#顺便设置的变量不知道属于什么变量

printself.__class__.val1#实例对象访问类变量的另一种方法

实例对象可以访问类变量和实例变量

但是类对象却只能访问类变量,在实例方法中的变量都不能访问。

相关的问题
  • 在python中变量没有被定义

    本地变量,即在函数内部,函数调用完就释放了,全局变量,只要程序运行,就不会释放,除非你用del变量名才会释放

  • python变量声明在同一行

    print("iamin",room)放在一个括号里就行了。或者像楼上那样print("iamin:%d"%room)

  • python局部变量在判断内使用

    不是,这两个都是全局变量,只有在函数内才是局部变量,所以输出32。举个局部变量的例子deftest:q=1这个q就是局部变量

  • Python在变量值后面添加

    因为是数字的话,执行的if语句,templs是个字符串,而如果是输入的字母,执行的是else语句,templs是int类型,与“/”字符串相接会报错,可将代码改成str(templs)+“/"应该就不会报错了。

  • 怎么在python中打印变量内容

    python打印变量的值需要用到print语句,具体的使用方法如下1.首先为了能顺理输出变量的值,需要在输出变量值定义一个变量,如定义变量名a。定义的格式为python会自动将a定义为整型变量,这与C语言的使用是有差别的。2.定义完后就可以使用print语句了,使用

  • python在双引号里输出变量

    print("python怎么用双引号打印输出一句话")

  • python在函数中删除变量

    我要纠正推荐答案中的说法!del并不是用来“删除引用指向的内存空间”,python中的del和c++中的delete是完全两个概念,不要误人子弟。。一般来讲,del是用来删除变量的引用的,例如a=1;dela,这里a是对1这个值的引用(python中所有的变量都可视

  • python定义在类之外的变量

    a是类变量,被类的所有对象共享,a一旦通过类的引用发生改变,则类的所有对象中的a也会发生变化,且可以通过类而不是对象来引用a。但当通过类的一个对象引用改变a时,此改变不会传递到其它对象和类中。比如classA(object):====a='astring'====def__init__(s

  • python判断list是否存在某变量

    index方法表示在list中查找元素的位置。没有查找到元素会报错。count方法表示在list中查找元素的个数。没有为0

  • python全局变量应该在哪定义

    复制代码count=0defFuc(count):+=(0,10):Fuc(count)复制代码结果是不是我们想要的结果。解决之道一——全局变量复制代码globalaa=3defFuc:=a+1if__name__=="__main__":(10):Fucprint'hello'pri