如果我定义一个小python程序
class a():
def _func(self):
return "asdf"
# Not sure what to resplace __init__ with so that a.func will return asdf
def __init__(self, *args, **kwargs):
setattr(self, 'func', classmethod(self._func))
if __name__ == "__main__":
a.func
Run Code Online (Sandbox Code Playgroud)
我收到回溯错误
Traceback (most recent call last):
File "setattr_static.py", line 9, in <module>
a.func
AttributeError: class a has no attribute 'func'
Run Code Online (Sandbox Code Playgroud)
我想弄清楚的是,如何在不实例化对象的情况下动态地将类方法设置为类?
这个问题的答案是
class a():
pass
def func(cls, some_other_argument):
return some_other_argument
setattr(a, 'func', classmethod(func))
if __name__ == "__main__":
print(a.func)
print(a.func("asdf"))
Run Code Online (Sandbox Code Playgroud)
返回以下输出
<bound method type.func of <class '__main__.a'>> …Run Code Online (Sandbox Code Playgroud) 我想要一个每5分钟执行一次的方法,我为ruby(cron)实现了.但它不起作用.我认为我的方法无法访问.我想要执行的方法位于一个类中.我想我必须将该方法设为静态,以便我可以访问它MyClass.MyMethod.但我找不到合适的语法,或者我找错了地方.
Schedule.rb
every 5.minutes do
runner "Ping.checkPings"
end
Run Code Online (Sandbox Code Playgroud)
Ping.rb
def checkPings
gate = Net::Ping::External.new("10.10.1.1")
@monitor_ping = Ping.new()
if gate.ping?
MonitorPing.WAN = true
else
MonitorPing.WAN = false
end
@monitor_ping.save
end
Run Code Online (Sandbox Code Playgroud) 可能重复:
C++静态虚拟成员?
我们可以拥有静态虚函数吗?如果没有,那么为什么?
class X
{
public:
virtual static void fun(){} // Why we cant have static virtual function in C++?
};
Run Code Online (Sandbox Code Playgroud) 我对这件事情有点困惑.我正在设计一个ORM类,它试图在ruby on rails上与ActiveRecord非常相似,但这不是重点.
我想说的是我的类广泛使用静态属性继承,特别是对数据库和表处理.我的问题是,我应该使用self ::
我在该类中有一个类Person和一个静态方法,名为call_person:
class Person:
def call_person():
print "hello person"
Run Code Online (Sandbox Code Playgroud)
在python控制台中,我导入类Person并调用Person.call_person().但它给我的错误说'module' object has no attribute 'call_person'.任何人都可以让我知道为什么我收到此错误?
是否存在任何通用方法或规则出口,通过这些方式或规则可以确保在任何应用程序的各种Utility类中专门使用的静态方法的线程安全性.在这里,我想特别指出Web应用程序的线程安全性.
众所周知,使用不可变对象作为参数的静态方法是线程安全的,而可变对象则不是.
如果我有一个实用程序方法进行某些操作java.util.Date并且该方法接受一个实例java.util.Date,那么这个方法就不是线程安全的.那么如何在不改变参数传递方式的情况下使其线程安全?
public class DateUtils {
public static Date getNormalizeDate(Date date) {
// some operations
}
}
Run Code Online (Sandbox Code Playgroud)
这类是javax.faces.context.FacesContext可变的吗?将此类的实例传递给此类静态实用程序方法是否安全?
这个类的列表,其实例可以作为参数传递或不能作为参数传递,可能很长; 那么在编写此类实用程序类的代码时,我们应该记住哪些要点?
我正在为ASP.NET缓存项目删除事件创建一个回调函数.
文档说我应该调用一个对象或调用我知道将存在的调用(将在范围内),例如静态方法,但它说我需要确保静态是线程安全的.
第1部分:我可以采取哪些措施使其非线程安全?
第2部分:这是否意味着,如果我有
static int addOne(int someNumber){
int foo = someNumber;
return foo +1;
}
Run Code Online (Sandbox Code Playgroud)
我叫Class.addOne(5); 和Class.addOne(6); 同时,我可能会返回6或7,具体取决于谁首先调用foo?(即比赛条件)
我是JSF 2的新手.我的问题是关于BalusC对这个问题的回答jsf2 ajax基于请求参数更新部件 我尝试了kickstart代码BalusC发布并且我遇到了EL解析错误:
/nameofpage.xhtml @12,64 rendered="#{bean.panels.contains('u1')}"
Error Parsing: #{bean.panels.contains('u1')}
Run Code Online (Sandbox Code Playgroud)
我想这是因为我没有运行一个支持Servlet 3.0/EL 2.2的容器,并且根据Servlet 3.0规范声明了/WEB-INF/web.xml.我正在使用Tomcat 6.
BalusC在他的回答中建议创建一个自定义EL功能.但是如何使用自定义EL功能完成此操作?或者只需配置我项目的某些部分即可解决这个问题?
以下是我的web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
Run Code Online (Sandbox Code Playgroud) 假设我们有以下代码:
[Test.js file]:
class Test {
...
public static aStaticFunction():void {
...
this.aMemberFunction(); // <- Issue #1.
}
private aMemberFunction():void {
...
this.aStaticFunction(); // <- Issue #2.
}
}
[Another.js file]:
class Another {
...
private anotherMemberFunction():void {
Test.aStaticFunction(); // <- Issue #3.
}
}
Run Code Online (Sandbox Code Playgroud)
请参阅Issue #x.我想解决的问题的评论(3).
我现在一直在玩一些配置,但我还没有完成.
你能帮我理解如何在三个地方访问这些方法吗?
谢谢.
我知道在Java中,静态方法就像实例方法一样继承,不同之处在于,当重新声明它们时,父实现被隐藏而不是被覆盖.好吧,这很有道理.但是,Java教程指出了这一点
接口中的静态方法永远不会被继承.
为什么?常规和接口静态方法有什么区别?
当我说静态方法可以继承时,让我澄清一下我的意思:
class Animal {
public static void identify() {
System.out.println("This is an animal");
}
}
class Cat extends Animal {}
public static void main(String[] args) {
Animal.identify();
Cat.identify(); // This compiles, even though it is not redefined in Cat.
}
Run Code Online (Sandbox Code Playgroud)
然而,
interface Animal {
public static void identify() {
System.out.println("This is an animal");
}
}
class Cat implements Animal {}
public static void main(String[] args) {
Animal.identify();
Cat.identify(); // This does not compile, because interface …Run Code Online (Sandbox Code Playgroud) static-methods ×10
java ×2
oop ×2
python ×2
c# ×1
c++ ×1
class ×1
concurrency ×1
el ×1
function ×1
inheritance ×1
interface ×1
java-8 ×1
javascript ×1
jsf ×1
jsf-2 ×1
php ×1
ruby ×1
setattr ×1
typescript ×1
utility ×1