如果这个问题看起来很简单,请原谅我 - 我正在查看一些看起来相当不错的源代码,但它提出了一些问题......
如果给定的类没有成员数据 - 即它不维护任何类型的状态,那么将该类标记为静态方法的静态类是否有任何好处?
没有标记不保持静态状态的方法有什么好处吗?
谢谢!
编辑:由于有人提出它,我正在看的代码是用c#编写的.
哪一个是我需要从多个页面调用方法的asp.net应用程序的更好方法?或者还有第三种更好的可能性?
在java代码中:
// Define ActionListener
ActionListener actionListener = new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
JButton button = **(JButton)actionEvent.getSource();**
int red = random.nextInt(255);
int green = random.nextInt(255);
int blue = random.nextInt(255);
button.setBackground(new Color(red, green, blue));
}
};
Run Code Online (Sandbox Code Playgroud)
突出显示的(之间**和**)代码有什么作用?
我发现研究这个主题非常困难,因为我不知道要使用哪些搜索术语.:○
希望有人可以提供帮助 TIA
我希望能够使用__delitem__类级变量.我的用例可以在这里找到(使用的答案_reg_funcs),但它基本上涉及一个装饰器类,它保存了它所装饰的所有函数的列表.有没有办法让类对象支持__delitem__?我知道我可以专门为此目的保留一个实例,但我宁愿不必那样做.
class Foo(object):
_instances = {}
def __init__(self, my_str):
n = len(self._instances) + 1
self._instances[my_str] = n
print "Now up to {} instances".format(n)
@classmethod
def __delitem__(cls, my_str):
del cls._instances[my_str]
abcd = Foo('abcd')
defg = Foo('defg')
print "Deleting via instance..."
del abcd['abcd']
print "Done!\n"
print "Deleting via class object..."
del Foo['defg']
print "You'll never get here because of a TypeError: 'type' object does not support item deletion"
Run Code Online (Sandbox Code Playgroud) 我正在研究Python中的代码,它创建了由Bond和Element对象组成的Compound对象(如化合物).这些Element对象是通过一些关于它们的输入(名称,符号,原子序数,原子质量等)创建的.如果我想用Element对象填充数组,并且我希望Element对象是唯一的,那么我可以做一些事情并保持其余部分不变,但是它们都应该具有与'Hydrogen'元素相关的信息.
这个问题Python为单个对象/类创建多个实例让我相信我应该为Element创建子类 - 即Hydrogen对象和Carbon对象等.
这是否可以在不创建子类的情况下实现,如果是这样,怎么办?
我想知道在使用Python中的OPP/Classes/Instances时,我应该总是在从 - 读取类的属性/变量时使用getAttr()/ setAttr().或者直接处理变量/属性(例如self.my_attr ="some_value")会是更好的做法吗?
class MyClass(object):
def __init__(self):
super(MyClass, self).__init__()
self.my_attr = 'My_Value'
def doSomething(self):
localVariable = self.my_attr
print localVariable
Run Code Online (Sandbox Code Playgroud)
class MyClass(object):
def __init__(self):
super(MyClass, self).__init__()
self.my_attr = 'My_Value'
def getMyAttr(self):
return self.my_attr
def doSomething(self):
localVariable = self.my_attr
print localVariable
Run Code Online (Sandbox Code Playgroud)
阅读"面向对象思想过程"一书(Matt Weisfeld:开发人员图书馆)......作者在其中不断说明:
"......对象内部属性的访问应该由对象本身控制 - 没有其他对象应该直接更改另一个对象的属性......"
"...如果您控制对属性的访问,当出现问题时,您不必担心跟踪可能已更改属性的每一段代码 - 它只能在一个地方更改(设置者) ......"
那时我会坚持使用二传手和吸气剂.这里建议/提到Python的@property和@ .setter使它更容易.
我有这个函数:
在这种情况下,变量c获取我的类的所有属性<T>:
c- >
Id
Key
Value
public List<T> ReadStoreProceadure<T>(string storeName)
{
var result = new List<T>();
var instance = (T) Activator.CreateInstance(typeof (T), new object[] {});
var c = typeof (T);
var data = DataReader.ReadStoredProceadures(_factibilidad, storeName); // This part is returning verified data and it's ok
while (data.Read())
{
if (data.HasRows)
{
foreach (var item in c.GetProperties())
{
//item.SetValue(c, item.Name, null);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我如何将这些值添加到我的实例instance并将其添加到我的result变量?这是可能的?
我来到这里是因为我对Unity和C#有一个奇怪的问题,我无法弄清楚如何解决这个问题.
我有两个C#脚本:
ScriptA实例化一次并具有静态变量.它有一个静态列表,其中包含路径的点.此列表随时间而变化.
ScriptB被多次实例化(它附加到敌人身上).在Start()上,它设置一个等于当前ScriptA.listOfPoint的非静态列表
问题是,这个非静态列表似乎更新了 ScriptA.listOfPoints.我只想ScriptA.listOfPoints在实例化ScriptB时有一个等于state 的列表.
我在这做错了什么?
提前致谢 :)
静态的 :
//ScriptA
public static List<int> listOfPoints = new List<int>();
public static void pathUpdate() //get called every 2secs
{
//listOfPoints is modified
}
Run Code Online (Sandbox Code Playgroud)
敌人:
//ScriptB
private List<int> nonStaticListOfPoints = new List<int>();
void Start ()
{
nonStaticListOfPoints = ScriptA.listOfPoints;
}
Run Code Online (Sandbox Code Playgroud) 我对JavaScript中的new关键字感到困惑.以下面的例子为例
function A (value) {
this.a = value;
}
function B (value) {
return new A (value);
}
console.log ( B (0)); // { a: 0 }
console.log (new B (0)); // { a: 0 }
Run Code Online (Sandbox Code Playgroud)
我希望能够创建一个新的"A"实例,而不必使用"new".为此,我有"B()",然而,当我调用"new B()"时,它似乎与"B()"做同样的事情,好像"new"被忽略了.在这两种情况下,instanceof等于"A".到底发生了什么?
我在为新对象分配外键属性时遇到问题.当我试图让我得到这个错误
无法分配"(<ConceptType:Producto>,)":"Receipt.concept"必须是"ConceptType"实例.
嗯,这是视图中的代码
if form.is_valid():
receipt = form.save(commit=False)
receipt.concept = ConceptType.objects.get(id=1),
Run Code Online (Sandbox Code Playgroud)
这是用于使用django-afip创建收据(https://gitlab.com/WhyNotHugo/django-afip)
谢谢
instance ×10
c# ×4
class ×4
python ×3
static ×3
object ×2
attr ×1
class-method ×1
django ×1
factory ×1
java ×1
javascript ×1
list ×1
methods ×1
node.js ×1
oop ×1
parentheses ×1
public ×1
python-2.7 ×1
reflection ×1
state ×1