精华内容
下载资源
问答
  • 初学Java,发现在对实例方法和类方法操作变量和对象操作方法的概念与原因模糊不清,做了一个思维导图。...包含为什么类方法只能操作类变量? 为什么只能通过对象调用实例方法? 为什么this不能出现在类方法中?等 ...

    在这里插入图片描述
    初学Java,发现在对实例方法和类方法操作变量和对象操作方法的概念与原因模糊不清,做了一个思维导图。
    包含为什么类方法只能操作类变量?
    为什么只能通过对象调用实例方法?
    为什么this不能出现在类方法中?等

    •                      之前出现了一点错误已经更正!
      
    展开全文
  • 1、前言 相信同学们一定懵逼过,那是,不懵逼就不正常了,现在由我为了大家在轻松的氛围... b、局部变量:在函数内、在class的方法(构造、方法、静态方法、实例方法)内(变量未加self修饰),这就是局部变量 ...

    前言

    相信同学们一定懵逼过这些【术语】,我马上在轻松的氛围下逐个说明标题中所述的名词,这些基本概念真的很重要…………

     

    基本概念

    全局变量:在模块内、所有函数外、所有class外

    局部变量:在函数内、在class的方法(类方法、静态方法、实例方法)内,且变量前面没有修饰

    类变量:在class内,不在class的任何方法内

    实例变量:在class的方法内,且使用self修饰的变量

     

    【全局变量】与【局部变量】举例

     

    ahead = 'HelloWorld' #ahead是全局变量
    showList = []        #showList也是全局变量
    
    def print_ahead():
        print(ahead)   #在该函数中没有称为ahead的局部变量,此处实际调用的是全局变量ahead
    
    def print_other():
        city = 'beijing'       #city是局部变量
        print(city + ahead)  #局部变量 与 全局变量 拼接
    
    def print_list():
        global showList    #global关键字表示引用的是全局变量showList
                        
        showList.append(1)
        showList.append(2)
        print(showList)
    
    print_ahead()
    print_other()
    print_list()

    输出结果:

    HelloWorld
    beijingHelloWorld
    [1, 2]

     

    【类变量】与【实例变量】举例

     

    class Person(object):
        TAG = "Person"               #TAG是类变量
        def __init__(self, name):    #self表示当前实例对象
            print(Person.TAG)      #类变量TAG被访问
            self.personName = name   #personName是实例变量
    
        def print_name(self):
            group = "BeiJing_"      #group是局部变量
            print(group + self.personName)  # 局部变量 与 实例变量 拼接
    
    if __name__ == "__main__":
        p = Person("WangYuanWai")
        p.print_name()

    输出结果:

    Person
    BeiJing_WangYuanWai

     

    全局变量与局部变量同名

     

    firstValue = "Hello World"
    
    def print_str():
        firstValue = "hi man"
    
        print(firstValue)  #注意:这里的firstValue调用的是局部变量firstValue,在方法中直接覆盖掉同名的全局变量firstValue

    如果在print_str函数中没有使用global关键字显式引用全局变量,在print_str函数中将优先使用局部变量,而不是全局变量

     

    省略global关键字

    你的函数里只是读取全局变量的值,并没有对变量有任何的赋值行为(指a = XXX这种的写入)的话,可以省略global修饰全局变量

    first = 100 #first是全局变量
    
    def my_hello():
        print(first) #只是访问(读取)全局变量first的值,无需global修饰(加上global更规范)

     

    不可省略global关键字

    name = "王员外"
    
    def change_name():
        global name
        name = "大哥大"

     上面的代码必须加上global修饰变量,说明是给全局变量name赋值,如果没有global修饰,只会说明你是在创建一个局部变量

     

    Python中的一切都是对象

    全局变量:属于模块对象的属性

    类变量:属于类对象的属性

    实例变量:属于实例对象的属性

    局部变量:属于方法对象或函数对象的属性吗?不属于………函数对象或者方法对象必须显式的添加属性……

     

    展开全文
  • python中类变量和实例变量详解

    千次阅读 2020-05-23 16:23:30
    python中类变量和实例变量详解 在了解类变量和实例变量之前,首先要知道类变量和实例变量的定义。 类变量:可在类的所有实例之间共享的值,就是指不是单独分配给每个实例,实例可以调用类变量。 实例变量:实例化...

    python中类变量和实例变量详解

    在了解类变量和实例变量之前,首先要知道类变量和实例变量的定义。
    类变量:可在类的所有实例之间共享的值,就是指不是单独分配给每个实例,实例可以调用类变量。
    实例变量:实例化之后,每个实例单独拥有的变量,类不能直接调用实例变量。

    一、基础的类变量和实例变量

    如下示例:num代表类变量,name代表实例变量。

    class Test(object):
        num=0
        def __init__(self,name):
            self.name=name
            Test.num += 1
    if __name__=="__main__":
        print(Test.num)
        t1=Test('jack')
        print(Test.num)
        t2=Test('lucy')
        print(t1.name,t1.num)
        print(t2.name,t2.num)
    

    二、在类的外部添加变量

    在类的外部也可以对类添加类变量或实例变量。

    class Test(object):
        num=0
        def __init__(self,name):
            self.name=name
            Test.num += 1
    if __name__=="__main__":
        t1=Test('jack')
        t2=Test('lucy')
        Test.class_str="添加类变量"
        print(Test.class_str)
        print(t1.class_str)
        print(t2.class_str)
        #添加实例变量
        t1.age = 20
    

    三、变量是不是随意添加?

    当不对类进行限制时,可以随便对类进行添加变量,使用__slots__可以对实例变量做限制:

    class Test(object):
        age = 1
        __slots__ = ["name","num"]
        def __init__(self,name):
            self.name = name
            Test.age += 1
    
    if __name__=="__main__":
        # print(Test.num)
        t1=Test('jack')
        # print(Test.num)
        t2=Test('lucy')
        # print(t1.name,t1.num)
        # print(t2.name,t2.num)
        Test.class_str="添加类变量"
        print(Test.class_str)
        print(t1.class_str)
        print(t2.class_str)
        t1.age = 20   #报错,此时不能再添加实例属性
        print(Test.age)
    
    展开全文
  • python类变量和实例变量

    千次阅读 2018-08-09 16:32:06
    类变量 实例变量

    类变量

    类的所有实例对象之间共享的变量,但是实例对象只能访问,不可修改。每个实例对象去访问同一个类变量都将得到相同结果。

    实例变量

    实例化之后,每个实例单独拥有的变量,即允许每个实例的实例变量的值不同。


    为了更好地理解,我设计实现了一个冰淇淋类。
    我们都知道,冰淇淋有品牌、工厂、商品名和售价这几个主要属性
    由于一个品牌会有很多种冰淇淋,所以把品牌和工厂作为类变量
    而每种冰淇淋会有自己的商品名以及售价,所以把商品名和售价作为实例变量

    具体代码如下:

    class IceCream:
        factory_brand = ''    #类变量-品牌
        factory_address = ''  #类变量-工厂
    
        @classmethod
        def set_factory(cls,brand,address):
            cls.factory_brand = brand
            cls.factory_address = address
    
        def __init__(self,name,price):
            self.name = name    #实例变量-商品名
            self.price = price  #实例变量-售价
    
        def show_info(self):
            print("品牌:%s ,工厂:%s ,商品名:%s ,售价:%s"%
                (self.factory_brand,self.factory_address,self.name,self.price))
    
    
    
    IceCream.set_factory("伊利","伊利加工厂")  #设置厂家信息
    ice_cream = IceCream("牛奶棒","3元")      #生产冰淇淋
    ice_cream.show_info()                    #输出商品信息
    ice_cream = IceCream("巧乐兹","5元")
    ice_cream.show_info()
    
    IceCream.set_factory("蒙牛","蒙牛加工厂")
    ice_cream = IceCream("小布丁","2元")
    ice_cream.show_info()
    ice_cream = IceCream("三色杯","6元")
    ice_cream.show_info()
    
    #输出
    #品牌:伊利 ,工厂:伊利加工厂 ,商品名:牛奶棒 ,售价:3元
    #品牌:伊利 ,工厂:伊利加工厂 ,商品名:巧乐兹 ,售价:5元
    #品牌:蒙牛 ,工厂:蒙牛加工厂 ,商品名:小布丁 ,售价:2元
    #品牌:蒙牛 ,工厂:蒙牛加工厂 ,商品名:三色杯 ,售价:6元

    可以看到,在设置了类变量之后,后面生成的所有实例对象都拥有了相同的类变量(品牌和工厂),因此在创建实例对象的时候我们只需要传入有差异的参数,如(商品名和售价)。

    展开全文
  • Python类变量与实例变量学习笔记

    万次阅读 2020-06-19 16:51:39
    # aa为类变量 aa = 1 # xy为实例变量 def __init__(self, x, y): self.x = x self.y = y if __name__ == '__main__': # a是实例A是一个类 a = A(2, 4) # 这里面xy就是实例变量,aa为类变量,a.aa会优先...
  • java中的变量(成员变量、本地变量、类变量

    万次阅读 多人点赞 2015-12-05 22:08:29
    3、类变量(静态属性) 一、成员变量(实例变量,属性) 1.1-成员变量:(在类中定义,访问修饰符修饰符typename=value) 1.2-什么是成员变量? 成员变量就是类中的属性。当new对象的时候,每个对象都有一份属性。一...
  • java中类变量和实例变量

    万次阅读 多人点赞 2019-03-27 16:08:54
    b)类变量(以static修饰) 区别: 访问:实例变量是通过定义类的对象来访问。类变量可以通过类或类对象来访问。 生存周期 :实例变量与类对象生存周期共存亡。类变量与类共存亡。 变量修改:多个对象指向...
  • (类变量)静态变量和实例变量的区别?

    万次阅读 多人点赞 2017-07-21 21:34:29
    (1)语法定义上的区别 静态变量用static修饰 实例变量没有static修饰 (2)运行区别,实例区别 ...类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果; 而实例...
  • 1.在__init__中定义self.__elements,其中self.__elements是类变量名,a是传入Difference类的参数名,这里的__init__作用是定义了类变量名,将外部参数a传给类变量名。 2.直接在类Difference中写类变量名...
  • 全局变量又叫成员变量,它是声明在类里,函数,静态语句块外的变量,全局变量又分为类变量(静态变量)、实例变量两种. 通过代码来看一下: private inti;//实例变量 private static int j;//类变量 实例变量总是通过对象...
  • Python类变量和实例变量区别

    千次阅读 多人点赞 2019-06-01 01:45:57
    类变量:可在类的所有实例之间共享的值(也就是说,它们不是单独分配给每个实例的)。 实例变量:实例化之后,每个实例单独拥有的变量。 class student(): age = 0 name = 'stu' # age,name是类变量 def __init_...
  • Java——类变量和实例变量的区别

    千次阅读 多人点赞 2019-04-29 15:47:01
    二是有static修饰的,称为类变量(静态变量)。 静态变量(类变量)具备以下特点: 随着类的加载而加载 优先于对象存在 被所有对象所共享 可以直接被类名调用 类变量和实例变量的区别是: 1,存放位置。 ...
  • 最近在看《零基础学java》看到变量分类时,上面说根据所属范围划分: 变量可分为类变量和成员变量。类变量不随产生的对象变化而变化; 成员变量则随对象不同而变化。可看了几个实例越看越混淆,求大神解答一下?
  • Python类定义字类变量与实例变量

    千次阅读 2018-01-19 11:02:01
    学过JAVA或C++等语言的程序员...Python类中定义的变量分为类变量和实例变量(也叫成员变量、对象变量),类变量直接定义在类里面(不在函数里面),前面不会有一个self修饰;相反,实例变量大都定义在实例函数里面,通
  • 成员变量和类变量的区别

    千次阅读 2018-11-14 15:12:26
    不同的对象的实例变量将被分配不同的内存空间, 如果类中的成员变量有类变量,那么所有对象的这个类变量都分配给相同的一处内存,改变其中一个对象的这个类变量会影响其他对象的这个类变量,也就是说对象共享类变量...
  • Python类变量与成员变量

    万次阅读 2016-12-18 23:19:16
    python 的类中,主要会使用的两种变量:类变量与成员变量。类变量是类所有实例化对象共有的,而成员变量是每个实例化对象自身特有的,下面通过两个小程序来说明一下。
  • 实例变量与类变量的区别

    万次阅读 2018-07-31 19:11:20
    实例变量也叫做对象变量,类变量也叫做静态变量 它们区别在于:实例变量为所属对象所私有,而类变量为所有对象所共有 如果一个对象将类变量的值进行改变,那么其他对象将不能改变他的值;而实例变量则是为对象所...
  • 成员变量和类变量(Java)

    千次阅读 2019-12-29 09:33:18
    变量定义 成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块...类变量类变量也声明在类中,方法体之外,但必须声明为static类型。 ...
  • 成员变量 类变量 成员方法 ...而且所有的实例都可以修改这个类变量的值(这个类变量没有被final修饰的情况),而且访问类变量的时候不用实例,直接用类名.的方式就可以。成员方法:包括实例方法和类
  • 我们知道运行程序时第一步是jvm加载.class文件到内存中,.class文件里肯定有定义的变量(这里就是一般的变量,不考虑static变量),那么类变量分配内存空间就是在这里了。 这里有个疑问,这个类变量是文本给加载的,...
  • 类变量:独立于方法之外的变量,用 static 修饰。 实例变量:独立于方法之外的变量,不过没有 static 修饰。 局部变量:类的方法中的变量。 变量 定义位置 初始化值 生命周期 作用范围 内存位置 ...
  • Java类变量(静态变量)

    千次阅读 2019-02-28 11:33:23
    -类变量也称为静态变量,在类中以static关键字声明,但必须在方法、构造方法和语句块之外。 -无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。 -静态变量除了被声明为常量外很少使用。常量是指声明为public/...
  • 类变量不仅可以直接通过类名+点操作符+变量名来操作,也可以通过类的实例+点操作符+变量来操作,大多数情况下,采用前者操作方式,一来不能够有效地使用该变量,二来能够表示该变量就是类变量。 2、...
  • java中成员变量、类变量、局部变量

    千次阅读 2018-02-25 20:03:12
    成员变量:定义在类中,方法体之外。变量在创建对象时实例化。成员变量可被类中的方法、构造方法以及特定...}类变量:定义在类中,方法体之外,但必须要有 static 来声明变量类型。静态成员属于整个类,可通过对象名...
  • 成员变量:把类内、方法体外定义的变量称为成员变量。Java中的成员变量分为两种:一是没有...类变量和实例变量的区别是:类变量在内存中只存一份,在程序运行时,系统只为类变量分配一次内存,只进行一次的初始化。...
  • 成员变量有2种:类变量和实例变量 类变量(又叫静态变量):前面加static关键字修饰; 1、 jvm把.class类加载到非堆里,然后在堆中为.class的类变量开辟内存;堆中的地址存放于栈以便高速访问; 2、类变量的生命...
  • java 简述类变量和实例变量的区别

    千次阅读 2019-06-05 12:42:26
    类变量也叫静态变量,也就是在变量前加了static 的变量; 实例变量也叫对象变量,即没加static 的变量; 类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 274,146
精华内容 109,658
关键字:

类变量