Questions tagged «class-method»

在类而不是对象上调用的方法。


9
Ruby:从实例调用类方法
在Ruby中,如何从该类的实例之一调用类方法?说我有 class Truck def self.default_make # Class method. "mac" end def initialize # Instance method. Truck.default_make # gets the default via the class's method. # But: I wish to avoid mentioning Truck. Seems I'm repeating myself. end end 该行将Truck.default_make检索默认值。但是,有一种不用说的说法Truck吗?似乎应该有。
347 ruby  class-method 

16
类方法的目的是什么?
我正在自学Python,最近的课程是Python不是Java,因此我花了一段时间将所有Class方法都转换为函数。 我现在意识到我不需要使用Class方法来完成staticJava中的方法,但是现在我不确定何时使用它们。我可以找到的有关Python类方法的所有建议都是像我这样的新手提出的,应该避免使用它们,并且在讨论它们时,标准文档最为模糊。 有没有人有在Python中使用Class方法的好例子,或者至少有人可以告诉我何时可以明智地使用Class方法?

10
通过函数指针调用C ++类方法
如何获取类成员函数的函数指针,然后再使用特定对象调用该成员函数?我想写: class Dog : Animal { Dog (); void bark (); } … Dog* pDog = new Dog (); BarkFunction pBark = &Dog::bark; (*pBark) (pDog); … 另外,如果可能的话,我也想通过指针来调用构造函数: NewAnimalFunction pNew = &Dog::Dog; Animal* pAnimal = (*pNew)(); 这可能吗?如果可以,这样做的首选方式是什么?


3
在Python中调用基类的类方法
考虑以下代码: class Base(object): @classmethod def do(cls, a): print cls, a class Derived(Base): @classmethod def do(cls, a): print 'In derived!' # Base.do(cls, a) -- can't pass `cls` Base.do(a) if __name__ == '__main__': d = Derived() d.do('hello') > $ python play.py > In derived! > <class '__main__.Base'> msg 从哪里来Derived.do,我怎么打电话Base.do? super如果这是一个普通的对象方法,通常我会直接使用甚至直接使用基类名称,但是显然我找不到在基类中调用类方法的方法。 在上面的示例中,Base.do(a)打印Baseclass而不是Derivedclass。

3
什么时候应该使用@classmethod?什么时候应该使用def method(self)?
在集成我以前从未使用过的Django应用程序时,我发现了用于定义类中函数的两种不同方式。作者似乎非常有意地使用了它们。第一个是我自己经常使用的: class Dummy(object): def some_function(self,*args,**kwargs): do something here self is the class instance 另一个是我不使用的,主要是因为我不知道何时使用它,以及什么用途: class Dummy(object): @classmethod def some_function(cls,*args,**kwargs): do something here cls refers to what? 在Python文档中,classmethod装饰器的解释如下: 类方法将类作为隐式第一个参数接收,就像实例方法接收实例一样。 所以我想cls指的是Dummy自己(而class不是实例)。我不完全理解为什么会这样,因为我总是可以这样做: type(self).do_something_with_the_class 这仅仅是为了清楚起见,还是我错过了最重要的部分:没有它就无法完成的怪异而令人着迷的事情?

5
在类方法中使用super
我正在尝试学习Python中的super()函数。 我以为我已经掌握了它,直到我看完这个示例(2.6)并发现自己陷入困境。 http://www.cafepy.com/article/python_attributes_and_methods/python_attributes_and_methods.html#super-with-classmethod-example Traceback (most recent call last): File "<stdin>", line 1, in <module> File "test.py", line 9, in do_something do_something = classmethod(do_something) TypeError: unbound method do_something() must be called with B instance as first argument (got nothing instead) >>> 当我在示例之前阅读此行时,这不是我期望的: 如果使用的是类方法,则没有实例可以调用super。对我们来说幸运的是,即使类型是第二个参数,super也可以工作。---可以将类型直接传递给super,如下所示。 Python不能通过说do_something()应该与B的实例一起调用来告诉我。

6
Python类方法的示例用例是什么?
我已经阅读了Python中的Class方法有什么用?但是这篇文章中的例子很复杂。我正在寻找一个清晰,简单,准系统的Python类方法用例的例子。 您能否列举一个小的特定示例用例,其中Python类方法将是完成此工作的正确工具?

4
类方法和元类方法之间有什么区别?
在Python中,我可以使用 @classmethod装饰器: >>> class C: ... @classmethod ... def f(cls): ... print(f'f called with cls={cls}') ... >>> C.f() f called with cls=<class '__main__.C'> 另外,我可以在元类上使用常规(实例)方法: >>> class M(type): ... def f(cls): ... print(f'f called with cls={cls}') ... >>> class C(metaclass=M): ... pass ... >>> C.f() f called with cls=<class '__main__.C'> 如输出所示 …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.