`
sean
  • 浏览: 16330 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

"class instance variable" 和 “class variable”的区别

阅读更多
  • class variables are available in class methods and instance methods, but class instance variable is only available in class methods:
    ruby 代码
    1. class Test    
    2.   @@cla_var = 1    
    3.   @inst_var = 1    
    4.        
    5.   def self.cla_var    
    6.     @@cla_var    
    7.   end    
    8.   def cla_var    
    9.    @@cla_var    
    10.   end    
    11.   def self.inst_var    
    12.     @inst_var    
    13.   end    
    14.     
    15.   def inst_var    
    16.      #here @inst_var is treated as the instance variable not class instance variable    
    17.      @inst_var    
    18.   end    
    19.  end    
  • Class variables are shared by children of the class in which they are first defined, but  class instance variables not, every child has it's own copy of class instance variable(Rumor has it that ruby1.9 will change this).
    ruby 代码
     
    1. class Parent  
    2.    @@cla_var = 1  
    3.    @inst_var = 2  
    4.      
    5.     def self.cla_var  
    6.         @@cla_var  
    7.     end  
    8.     def self.inst_var  
    9.         @inst_var  
    10.     end  
    11.   
    12.     def self.cla_var=(cla_var)  
    13.         @@cla_var = cla_var  
    14.     end  
    15.     def self.inst_var=(inst_var)  
    16.         @inst_var = inst_var  
    17.     end  
    18.   
    19. end  
    20. class Child1 < Parent  
    21. end  
    22. class Child2 < Parent  
    23. end  
    24.   
    25. #class variables are shared by parent and all the children  
    26. >> Parent.cla_var  
    27. => 1  
    28. >> Child1.cla_var  
    29. => 1  
    30. >> Child2.cla_var  
    31. => 1  
    32. >> Child1.cla_var = 3  
    33. => 3  
    34. >> Parent.cla_var  
    35. => 3  
    36. >> Child2.cla_var   
    37. => 3  
    38.   
    39. #every children has it's own copy of class instance variables  
    40. >> Parent.inst_var  
    41. => 2  
    42. >> Child1.inst_var  
    43. => nil  
    44. >> Child2.inst_var>> Child1.inst_var = 4  
    45. => 4  
    46. >> Parent.inst_var  
    47. => 2  
    48. >> Child2.inst_var  
    49. => nil  
    50.   
    51. => nil  

分享到:
评论

相关推荐

    ios demo,自定义一个类,实例变量和成员变量的实现

    在这个例子中,我们使用`@synthesize`指令来自动创建`_memberVariable`的setter和getter,而`instanceVariable`是通过手动实现的。 5. 使用这些变量:在类的实例中,我们可以通过点语法`.`来访问和修改这些变量的值...

    variables:类和实例变量的“变量”对象

    Object#instance_variable_get Object#instance_variable_set 但请注意,这些都共享一个公共前缀 - instance_variable_或class_variable_ 。 这感觉有点,让我们尝试用一些Variable对象来它!安装 gem install ...

    Objective-C头文件导出工具class-dump

    -a show instance variable offsets -A show implementation addresses --arch &lt;arch&gt; choose a specific architecture from a universal binary (ppc, ppc64, i386, x86_64) -C &lt;regex&gt; only display classes ...

    java api 文档 jdk9

    a - Variable in class java.awt.AWTEventMulticaster A variable in the event chain (listener-a) A - Static variable in class java.awt.PageAttributes.MediaType The MediaType instance for Engineering A, 8...

    Ruby类实例变量、类实例方法和类变量、类方法的区别

    它们各自有不同的用途和行为特性,下面详细介绍这些概念的区别以及它们的使用场景。 首先,类实例变量和类实例方法都属于对象的内部状态和行为,而类变量和类方法则是与整个类相关联的全局状态和行为。我们从以下几...

    InstanceVar

    在iOS开发中,实例变量(Instance Variable)是类对象中用于存储数据的私有变量,它们通常是类的内部实现细节,对外不可见。本篇内容将深入探讨实例变量如何引发循环引用问题,以及如何解决这一问题,以确保内存管理...

    class-dump:从Mach-O文件生成Objective-C标头

    类转储 class-dump是一个命令行实用程序,用于检查Mach-O文件的Objective-C段。 它为类,类别和协议生成声明。 这是使用'otool -ov'提供的相同信息,但以普通的Objective-C... -a show instance variable offsets -A

    Python面试内容很多,干货满满

    print(my_instance.class_var) # 输出:I am a class variable. print(my_instance.instance_var) # 输出:I am an instance variable. ``` #### 5. Python自省 Python提供了一些内置函数和模块来帮助进行自省,即...

    01Ruby 变量.docx

    Ruby 支持多种类型的变量,它们根据不同的作用域和用途有着明确的区别: 1. **变量 (Variable)**:一般由小写字母或下划线开头。 2. **全局变量 (Global variable)**:以 `$` 开头。 3. **实例变量 (Instance ...

    javafinal和static总结.docx

    System.out.println("Instance variable: " + INSTANCE_VARIABLE); System.out.println("Static variable: " + STATIC_VARIABLE); System.out.println("Local variable: " + LOCAL_VARIABLE); } } ``` #### 三...

    Python面向对象编程介绍.docx

    面向对象编程的核心概念主要包括类(Class)、对象(Object)、实例变量(Instance Variable)、方法(Method)以及继承(Inheritance)。 1. 类(Class):类是创建对象的蓝图,它定义了一组属性(数据成员)和...

    09.【继承、super、this、抽象类】.zip

    例如,`this.instanceVariable`表示当前对象的实例变量,而`instanceVariable`可能被解析为局部变量。 抽象类(Abstract Class)是不能实例化的类,它定义了一组接口(即方法的签名),但并不提供具体实现。抽象类...

    Python Interview

    print(instance1.class_var) # 输出:This is a class variable print(instance1.instance_var) # 输出:Instance variable for instance1 print(instance2.class_var) # 输出:This is a class variable print...

    类变量、全局变量、实例变量, 多态、为什么ruby、ruby编码规范

    puts my_instance.class_variable_get(:@@class_var) # 输出 "Hello, Class Variable!" ``` 二、全局变量 全局变量以`$`前缀标识,它们在整个程序的任何地方都可被访问。全局变量的使用应谨慎,因为它们可能导致...

    C#命名規范詳細解說

    例如,`localVariable`,`instanceVariable`。局部变量(Local Variable)和成员变量(Member Variable)的命名应清晰明了,反映其用途。 5. **常量命名**:常量(Constant)通常以全大写字母表示,并用下划线分隔...

    python-class:基本的python代码。 初学者的例子和练习

    - 在类定义中,属性可以作为类变量(class variable)或实例变量(instance variable)。类变量是所有对象共享的,而实例变量是每个对象独有的。 3. **方法(Methods)** - 方法是与类相关联的函数,用于操作类的...

    Ruby元编程第二版中文

    `instance_variable_get`和`instance_variable_set`用于访问实例变量,而`class_variable`系列方法用于处理类变量。 4. **常量、属性和符号**:Ruby允许在运行时动态地设置和修改常量。`attr_accessor`、`attr_...

    Python教程:面向对象.pdf

    属性是类的成员,包括实例变量(Instance Variable)和类变量(Class Variable)。实例变量是与对象绑定的变量,每个对象都有自己独立的一份副本。类变量则是所有对象共享的同一份变量。例如: ```python class ...

    ActionScript3.0教程

    - AS3中更加严格地遵循了面向对象编程的原则,例如类(`class`)、接口(`interface`)、封装(`public`、`private`等访问修饰符)、继承(`extends`)和多态性等概念得到了加强。 - 类定义格式发生了变化,比如...

    python面向对象

    self.instance_var = "Instance Variable" @classmethod def class_method(cls): print("This is a class method.") @staticmethod def static_method(): print("This is a static method.") ``` #### ...

Global site tag (gtag.js) - Google Analytics