我一直在学习python遵循一些pygame教程 。 其中我发现广泛使用了关键字self ,并且主要来自Java背景,我发现我一直忘记inputself 。 例如,而不是self.rect.centerx我会inputrect.centerx ,因为,对我来说, 矩形已经是该类的成员variables。 对于这种情况,我可以想到的Java并行处理必须将所有对成员variables的引用加上前缀。 我坚持用自己的所有成员variables前缀,还是有一种方法来宣布他们,让我可以避免这样做? 即使我所build议的不是pythonic ,我仍然想知道是否有可能。 我已经看了这些相关的SO问题,但是他们并没有完全回答我的问题: Python – 为什么在一个类中使用“self”? 为什么你需要在Python方法中明确地拥有“自我”的参数?
这不是特定的Rails – 我只是使用Rails作为例子。 我在Rails中有一个模型: class Item < ActiveRecord::Base def hello puts "Hello, #{self.name}" end end (比方说, Item模型(类)有一个称为name的方法)。 我什么时候需要使用self.name ,什么时候可以使用name ? (例如#{name} )
这里是一些代码: class Person def initialize(age) @age = age end def age @age end def age_difference_with(other_person) (self.age – other_person.age).abs end protected :age end 我想知道的是在age_difference_with方法中使用@age和self.age之间的区别。
我已经阅读了这个网站上关于这个问题的一些问题,我理解如下: self.property访问手动创build或通过@synthesize创build的getter / setter方法。 取决于属性是否被声明为保留,复制等,保留计数被正确修改,例如保留属性,释放先前赋值为“保留”的新值,并将保留计数递增1。 属性通常使用相同名称的实例variables来声明(如果您手动进行赋值,可能会有所不同)。 这通常是因为@synthesize生成的访问器使用实例variables来引用内存中的对象,然后执行相关的命令。 我的问题是基于这样的事实,在很多例子中,self.property和property在不同的事情上可以互换使用,而且我在判断规则时遇到了麻烦。 “苹果文档”中的“食谱”示例应用程序中的一个示例具有以下内容: self.navigationItem.title = recipe.name; nameTextField.text = recipe.name; overviewTextField.text = recipe.overview; prepTimeTextField.text = recipe.prepTime; 和… self.ingredients = sortedIngredients; 每个属性都具有相同名称的相关私有实例variables。 所有的都是用“非primefaces的,保留的”属性以相同的方式声明的。 每个都释放dealloc … 然而,“成分”是通过自我访问和“prepTimeTextField”直接访问。 访问方法不同的原因是什么? 如果我正在访问视图的代表呢? 或者是一个核心数据对象,它被前一个视图控制器作为保留属性传递给视图控制器? 非常感谢
Python中的类和实例variables有什么区别? class Complex: a = 1 和 class Complex: def __init__(self): self.a = 1 使用调用: x = Complex().a在两种情况下都将x赋值为1。 有关__init__()和self的更深入的答案将不胜感激。
Python中self单词的目的是什么? 我明白它是指从该类创build的特定对象,但我不明白为什么它明确需要作为参数添加到每个函数。 为了说明,在Ruby中我可以这样做: class myClass def myFunc(name) @name = name end end 我很明白,很容易。 但是在Python中我需要包含self : class myClass: def myFunc(self, name): self.name = name 任何人都可以通过这个说话吗? 这并不是我在我的(当然是有限的)经验中遇到的。