标签: instance-variables

类的属性及其子类

是否可以定义仅对它们所定义的类可用的属性,以及该类的子类?

换句话说,有没有办法定义受保护的属性?

properties protected objective-c instance-variables

22
推荐指数
2
解决办法
1万
查看次数

@interface或@implementation中的私有ivar

是否有理由申报私人伊娃@interface而不是@implementation

我在整个互联网上看到这样的代码(包括Apple提供的文档):

foo.h中

@interface Foo : NSObject {
@private
    id _foo;
}
@end
Run Code Online (Sandbox Code Playgroud)

Foo.m

@implementation Foo
// do something with _foo
@end
Run Code Online (Sandbox Code Playgroud)

头文件定义了一个类的公共接口,而一个私有的ivar是...... well ... private.那么为什么不这样声明呢?

foo.h中

@interface Foo : NSObject
@end
Run Code Online (Sandbox Code Playgroud)

Foo.m

@implementation Foo {
@private
    id _foo;
}

// do something with _foo
@end
Run Code Online (Sandbox Code Playgroud)

visibility objective-c instance-variables

22
推荐指数
1
解决办法
5114
查看次数

Ruby on Rails-:符号,@ iVars和"字符串" - 哦,我的!

新到Rails并试图围绕让我的头的时候/为什么要使用:symbols,@ivars,"strings"的框架内.

我想我从概念上理解它们之间的差异

  • :symbol每个项目只有一个实例
  • @ivar每个实例一个
  • multiple "strings"- 因为它们是在引用时创建的(?)

随意纠正我!

主要的困惑来自于理解Rails期望的规则惯例 - 在哪里以及为什么?

我确定有一个"啊哈!" 那一刻即将到来,但我还没有...因为它对我来说似乎很随意(来自C/Obj-C).

-谢谢

ruby string symbols ruby-on-rails instance-variables

21
推荐指数
2
解决办法
2万
查看次数

内部类方法是返回值还是仅修改实例变量?

我正在创建一个查询构建器类,它将帮助从URL params构建mongodb的查询.除了使用基本的语言结构和使用django的内置模型之外,我从未做过太多面向对象的编程,或者设计了除我自己以外的人使用的类.

所以我有这QueryBuilder门课

class QueryHelper():
    """
    Help abstract out the problem of querying over vastly
    different dataschemas.
    """

    def __init__(self, collection_name, field_name, params_dict):
        self.query_dict = {}
        self.params_dict = params_dict
        db = connection.get_db()
        self.collection = db[collection_name]

    def _build_query(self):
        # check params dict and build a mongo query
        pass
Run Code Online (Sandbox Code Playgroud)

现在,_build_query我将检查params_dict和填充,query_dict以便将其传递给mongo的find()功能.在这样做时,我只是想知道是否有一个绝对正确的方法,因为是否_build_query应该返回字典或是否应该只修改self.query_dict.因为它是一个内部方法,我认为只需修改即可self.query_dict.是否有正确的方法(pythonic)接近这个?这只是愚蠢而不是重要的设计决定吗?任何帮助表示赞赏.

python oop instance-variables

21
推荐指数
4
解决办法
2548
查看次数

为什么Java中的实例变量总是私有的?

我是Java的新手,我正在学习封装,并看到了一个示例,其中实例变量在类中声明为私有.

http://www.tutorialspoint.com/java/java_encapsulation.htm

我有2个查询:

  1. 为什么实例变量是私有的?为什么不公开?
  2. 如果实例变量公开并直接访问会怎样?我们看到任何限制吗?

你可以用一个例子来解释,如果在Java中的类中将实例变量声明为public,会出现什么问题?

java instance-variables

20
推荐指数
3
解决办法
6万
查看次数

局部变量设置为nil?(目标C)

我正在读一本关于Objective-C的书,作者说如果局部变量没有赋值,它们将被设置为nil,但静态变量将被设置为零.所以,我设置int a并没有给它赋值.然后NSLog(@"%i", a)显示它并a显示为零.我对此感到有些困惑,我想知道是否有人可以为我澄清一下?

null objective-c instance-variables static-variables

20
推荐指数
2
解决办法
1万
查看次数

静态与实例变量:差异?

静态变量和实例变量之间有什么区别.以下句子是我无法得到的:

在某些情况下,类的所有对象只应共享特定变量的一个副本 - 这里使用静态变量.
静态变量表示类范围信息.类的所有对象共享相同的数据.

我认为实例变量是使用类宽,而静态变量只在自己的方法中有范围?

java class instance-variables static-variables

20
推荐指数
3
解决办法
8万
查看次数

依赖默认字段初始化-编程风格不好吗?

我得到了指向官方Oracle文档的链接:https : //docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

据说:

默认值

声明字段时,不一定总是需要分配值。编译器会将已声明但未初始化的字段设置为合理的默认值。通常,此默认值将为零或null,具体取决于数据类型。但是,通常认为依赖于此类默认值是不好的编程风格。

我想强调这一部分:

但是,通常认为依赖于此类默认值是不好的编程风格。

但是,天哪,我想这是语言规范的基本组成部分,因为它知道实例变量具有默认值。如果即使在Java SE库源代码中也广泛使用它,那么到底为什么这是一种不好的编程习惯呢?

java instance-variables default-value

20
推荐指数
3
解决办法
763
查看次数

在Ruby中继承类级实例变量?

我希望子类从其父级继承类级实例变量,但我似乎无法弄明白.基本上我正在寻找这样的功能:

class Alpha
  class_instance_inheritable_accessor :foo #
  @foo = [1, 2, 3]
end

class Beta < Alpha
  @foo << 4
  def self.bar
    @foo
  end
end

class Delta < Alpha
  @foo << 5
  def self.bar
    @foo
  end
end

class Gamma < Beta
  @foo << 'a'
  def self.bar
    @foo
  end
end
Run Code Online (Sandbox Code Playgroud)

然后我想要这样输出:

> Alpha.bar
# [1, 2, 3]

> Beta.bar
# [1, 2, 3, 4]

> Delta.bar
# [1, 2, 3, 5]

> Gamma.bar
# [1, 2, 3, 4, 'a']
Run Code Online (Sandbox Code Playgroud)

显然,这段代码不起作用.基本上我想为父类继承的类级实例变量定义一个默认值.对于子子类,子类中的更改将是默认值.我希望这一切都能在不改变影响其父母或兄弟姐妹的一个类的价值的情况下发生.Class_inheritable_accessor给出了我想要的行为......但是对于一个类变量.

我觉得我可能会问得太多.有任何想法吗?

ruby oop inheritance scope instance-variables

19
推荐指数
3
解决办法
7134
查看次数

rspec中的实例变量如何工作?

以下是M Hartl的Ruby on Rails教程中的一些代码.任何人都可以解释为什么实例变量(@user)是必要的,为什么不使用局部变量.此外,由于实例变量应该是类实例中的变量,哪个类是@user实例化的?

require 'spec_helper'

describe User do

  before { @user = User.new(name: "Example User", email: "user@example.com") }

  subject { @user }

  it { should respond_to(:name) }
  it { should respond_to(:email) }
end
Run Code Online (Sandbox Code Playgroud)

ruby rspec ruby-on-rails instance-variables ruby-on-rails-3

19
推荐指数
2
解决办法
2万
查看次数