- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
有时 self 可以表示类的实例,有时也可以表示类本身。那么,为什么我们不用inst
和klass
而不是self
呢?这不会让事情变得更容易吗?
现在怎么样了
class A:
@classmethod
def do(self): # self refers to class
..
class B:
def do(self): # self refers to instance of class
..
我认为他们应该如何
class A:
@classmethod
def do(klass): # no ambiguity
..
class B:
def do(inst): # no ambiguity
..
那么在 zen of Python 中我们为什么不这样编程呢?据说显式比隐式好?有什么我想念的吗?
最佳答案
类方法支持很晚才添加到 Python 中,并且已经建立了使用 self
作为实例的约定。保持该约定稳定比切换到更长的名称(如 instance
)更有值(value)。
类方法的约定是使用名称cls
:
class A:
@classmethod
def do(cls):
换句话说,约定已经存在以区分类对象和实例;永远不要对类方法使用 self
。
另见 PEP 8 - Function and method arguments :
Always use
self
for the first argument to instance methods.Always use
cls
for the first argument to class methods.
关于Python inst/klass 而不是 self ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28626777/
这适用于 Hash[...],这与 Hash::[...] 非常相似。但这在内部是如何工作的——有区别吗?而且,Klass[] 是否因为方法名称以特殊字符开头而起作用?我们可以有一个名为“test”的
def record return unless @supported klasses = profile_options[:formats].map { |f| RubyPr
现在我有很多: it{ ::Api.any_instance.should_receive(...).once; start } 如果我试图让 ::Api.any_instance 成为主题,Rspe
有时 self 可以表示类的实例,有时也可以表示类本身。那么,为什么我们不用inst 和klass 而不是self 呢?这不会让事情变得更容易吗? 现在怎么样了 class A: @classme
我在代码片段中遇到了以下语法,但我不确定它的作用。 class << PushableModule = Module::new def new *args, &blk m = Module::
我正在尝试使用 Mockito。 我有课 @Provider public class SessionProvider implements InjectableProvider{ @Over
在 Java 中,它表示: String[] is subtype of Object[] 所以数组被称为协变的。但对于泛型,他们说: List will not be subType of List
我正在查看讨论中的一些代码并偶然发现了这个并且想知道为什么 klass = self.据我所知,他们是比我更好的 ruby 开发人员,这一定是有充分理由的。 他们为什么不调用 self.remov
我是 Rails 的新手,我对 ORM 关系有疑问。 当我访问/admin/health_concerns_lists 时 这显示了。 Showing /Users/sbpipb/.rvm/gems/
我是 Rails 的新手,我对 ORM 关系有疑问。 当我访问/admin/health_concerns_lists 时 这显示了。 Showing /Users/sbpipb/.rvm/gems/
我已经从我们的暂存环境中拉下了一个应用程序,该应用程序在暂存计算机上完美运行,但在本地它卡在 sequelize.sync 函数上。 应用程序甚至没有到达“监听端口...” 我已经通过 Sequeli
今天我看到这段代码: void CameraTree::dragMoveEvent(QDragMoveEvent *event) { QTreeWidget:dragMoveEvent(eve
类和类有什么区别? 最佳答案 class 是用于定义新类的关键字。由于它是保留关键字,因此您不能将它用作变量名。您不能使用 Ruby 的任何关键字作为变量名,因此您不能将变量命名为 def 或 mod
我目前正在做一个 has_many :through association,但我一直收到这个错误 NoMethodError: undefined method `klass' for
Feature: test randomness In order to make some code testable As a developer I want Array
在我的 Rails 3 应用程序中,我有以下简单的关系结构: class Rollout :rollout_items end class RolloutItem :rollout_items e
大家好,我在嵌套模型和表单上关注了 Ryan Bates 的 railscasts,但是我得到了 nil:nilclass 的未定义方法 `klass'。我很确定这是由于 link_to_add_fi
当我尝试通过 ActiveAdmin 的仪表板查看两个特定模型时,我收到以下错误。我读过的所有内容都指向一个可能的关联问题,但我不确定如何纠正它。我看到很多人遇到同样的问题,但还没有找到任何解决方案。
我正在使用 simple_form的 fields_for 并使用 Ryan Bates ( Railscast ) 提出的 link_to_add_fields 方法动态添加字段。 我的问题是 f.
我是一名优秀的程序员,十分优秀!