标签: static-methods

类VERSUS命名空间,OR类AND命名空间?

Class和Namespace都有?

这个问题是关于我看到自己越来越多地使用的模式:为相关概念提供类和命名空间.我认为这主要是由C++语言工件推动的,但并非完全如此.

我认为最高级别的问题是:这是个好主意吗?同时具有相关概念的类和命名空间?

较低级别的问题:

做这个的最好方式是什么?

嵌套在命名空间中的类?:

namespace Foo_Namespace {
   class Foo_Class {
       ...
   };
}
Run Code Online (Sandbox Code Playgroud)

或者是单独的,对等的,类和命名空间?:

class Foo_Class {
    ...
};
namespace Foo_Namespace {
   // non-class free functions, etc.
}
Run Code Online (Sandbox Code Playgroud)

我必须承认,我倾向于在命名空间中嵌套类.即使它导致丑陋的名字.但即使我这样做,我应该使用哪些命名约定:

以下内容太长,导致名称Foo_Namespace :: Foo_Class非常难看

namespace Foo_Namespace {
   class Foo_Class {
       ...
   };
}
Run Code Online (Sandbox Code Playgroud)

没有必要在名称中使用任何后缀或指示符:

namespace Foo {
   class Foo {
       ...
   };
}
Run Code Online (Sandbox Code Playgroud)

但是当我看到Foo :: bar()时,我发现自己不确定,如果它是namespace :: Foo中的自由函数栏,即:: Foo :: bar(),或者名称空间中的类Foo中的成员函数::富::富::酒吧().

像:: Foo :: Foo :: bar这样的名字仍然没有,嗯,很好.

目前我在做

没有必要在名称中使用任何后缀或指示符:

namespace Foo_ns {
   class Foo {
       ...
   };
}
Run Code Online (Sandbox Code Playgroud)

主要是因为我通常先创建类,然后再认识到命名空间会很好.

我想知道是否应该恢复我多年来没有使用过的命名约定:_c用于类,_ns用于命名空间: …

c++ static-methods namespaces class non-member-functions

12
推荐指数
1
解决办法
6551
查看次数

如何从Scala访问Java静态方法,给出它所驻留的类的别名

给定类型别名type Cal = java.util.Calendar如何static getInstance访问该方法?我在Scala REPL中尝试了以下内容:

scala> type Cal = java.util.Calendar
defined type alias Cal
scala> Cal.getInstance
<console>:8: error: not found: value Cal
          Cal.getInstance
          ^
scala> val Cal = java.util.Calendar
<console>:7: error: object Calendar is not a value
   val Cal = java.util.Calendar
                       ^
Run Code Online (Sandbox Code Playgroud)

import java.util.{Calendar => Cal}其次import Cal._真的是我最好的选择?

java static-methods scala type-alias

11
推荐指数
1
解决办法
2983
查看次数

静态方法内存分配

我们有两个分类堆和堆栈.创建对象时,对象的内存存储在堆中.如果类具有静态方法,可以使用类名调用该怎么办.如果没有创建对象,那么它将如何分配内存,如果它在哪里分配内存?

java static static-methods static-members

11
推荐指数
1
解决办法
7578
查看次数

不能在c ++类实现文件(.cpp)中的静态方法上使用"static"关键字

考虑:

//在Vector2.h中

class Vector2
{
    public:
        // returns the degrees in radians
        static double calcDir(double x, double y);
}
Run Code Online (Sandbox Code Playgroud)

//在Vector2.cpp中

double Vector2::calcDir(double x, double y)
{
    double rad = ...;
    return rad;
}
Run Code Online (Sandbox Code Playgroud)

为什么Vector2.cpp中的签名不需要关键字static?当我尝试这个时,它会产生一个错误:

static double Vector2::calcDir(double x, double y)
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎不一致.方法签名的所有其他部分都需要在.cpp文件中重复(返回类型,方法名称(duh),args的名称和类型,const-ness).我不喜欢一眼就知道方法是否是静态的(在查看实现时).

有没有理由这不仅不是必需的,而且是禁止的?

c++ static static-methods

11
推荐指数
1
解决办法
1029
查看次数

Excel vba创建Range的每个可能组合

我有一个问题,我无法在网上的任何地方找到它(它可能在那里,但我找不到它,嘿).

我有一个包含13列数据的电子表格.每列都包含需要进入整个测试用例的参数变体.

所有这些都不一样,比如

E:
101%
105%
110%
120%

J:
Upper S
Upside L
Downside B
Premium V.

我已经看到了使用嵌套循环的组合问题的几种解决方案.我想避开13个嵌套循环(但这是我目前最好的选择).我对如何在每列中生成每个独特组合感到茫然.

我不确定这对你们是否足够有意义.我希望有人能够通过递归算法至少指出我正确的方向.我想让它足够动态,可以使用不同数量的列和行.

感谢你们给我的任何帮助.

excel vba static-methods combinations permutation excel-vba

11
推荐指数
3
解决办法
7万
查看次数

Python静态方法,为什么?

可能重复:
Python中@staticmethod和@classmethod有什么区别?

我在课堂上有一些关于staticmethods的问题.我将首先举一个例子.

例一:

class Static:
    def __init__(self, first, last):
        self.first = first
        self.last = last
        self.age = randint(0, 50)
    def printName(self):
        return self.first + self.last
    @staticmethod
    def printInfo():
        return "Hello %s, your age is %s" % (self.first + self.last, self.age)

x = Static("Ephexeve", "M").printInfo()
Run Code Online (Sandbox Code Playgroud)

输出:

Traceback (most recent call last):
  File "/home/ephexeve/Workspace/Tests/classestest.py", line 90, in <module>
    x = Static("Ephexeve", "M").printInfo()
  File "/home/ephexeve/Workspace/Tests/classestest.py", line 88, in printInfo
    return "Hello %s, your age is %s" % (self.first + self.last, self.age)
NameError: …
Run Code Online (Sandbox Code Playgroud)

python oop attributes static-methods class-method

11
推荐指数
1
解决办法
4001
查看次数

在java中调用静态方法

可能重复:
如何在空引用上调用(静态)方法不会抛出NullPointerException?

任何人都可以解释为什么以下程序的输出被" 调用 "

public class Test4{

  public static void method(){
    System.out.println("Called");
  }

  public static void main(String[] args){
    Test4 t4 = null;
    t4.method();
  }
}
Run Code Online (Sandbox Code Playgroud)

我知道我们可以使用类引用调用静态方法,但在这里我使用null引用调用.请澄清我的疑问

java static-methods

11
推荐指数
1
解决办法
5万
查看次数

如何在unmocked类中使用autospec修补classmethod?

我想声明Python类中的一个类方法调用另一个带有一组参数的classmethod.我希望模拟的classmethod是"spec-ed",因此它会检测是否使用错误的参数调用它.

当我使用patch.object(.., autospec=True, ..)classmethod 补丁时,classmethod被替换为a NonCallableMagicMock并在我尝试调用它时引发错误.

from mock import patch

class A(object):

    @classmethod
    def api_meth(cls):
        return cls._internal_classmethod(1, 2, 3)

    @classmethod
    def _internal_classmethod(cls, n, m, o):
        return sum(n, m, o)

with patch.object(A, '_internal_classmethod') as p:
    print(type(p).__name__)

with patch.object(A, '_internal_classmethod', autospec=True) as p:
    print(type(p).__name__)
Run Code Online (Sandbox Code Playgroud)

产生输出:

MagicMock
NonCallableMagicMock
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到一个特定的模拟器来判断_internal_classmethod它所属的类何时不被嘲笑?

python static-methods mocking class-method python-mock

11
推荐指数
2
解决办法
3819
查看次数

用@staticmethod装饰__call__

为什么我不能使用@staticmethod装饰器使类'__call__方法静态?

class Foo(object):
    @staticmethod
    def bar():
        return 'bar'

    @staticmethod
    def __call__():
        return '__call__'

print Foo.bar()
print Foo()
Run Code Online (Sandbox Code Playgroud)

输出

bar
<__main__.Foo object at 0x7fabf93c89d0>
Run Code Online (Sandbox Code Playgroud)

但我希望它输出

bar
__call__
Run Code Online (Sandbox Code Playgroud)

python static-methods decorator python-decorators

11
推荐指数
1
解决办法
2255
查看次数

如果我在PHP中使用静态方法来创建与数据库的连接,我最终会得到一个或多个连接?

我正在寻找创建一个被调用的对象将数据传递到数据存储.我的实现使用MySQLi,但我想允许其他开发人员使用他们想要的任何数据存储.

我认为静态方法可能是最好的答案,但对它们不熟悉我不确定我是否真的会创建大量连接或重用相同的连接.

<?php
    class RECORDS {

        protected $conn;

        public function __construct() {
            //contect to DB
            $conn = $this::connection();
        }

        public static function &connection(){
            $conn = NULL;
            if($conn==NULL){
                $conn = new mysqli(_DB_HOST_, _DB_USER_, _DB_PASS_, _DB_HOST_);
                if ($mysqli->connect_errno) {
                    die("Failed to connect to MySQL: (" .
                         $mysqli->connect_errno . ") " .
                         $mysqli->connect_error);
                }
            }
            return $conn;
        }
        // ... methods that do stuff
    }
Run Code Online (Sandbox Code Playgroud)

我是否对静态方法有了正确的认识,我是否会重复使用相同的连接或创建新的连接?

php mysqli static-methods

11
推荐指数
1
解决办法
1690
查看次数