我正在做这样的事情:
class Class(object):
def __init__(self):
self.var=#new instance name string#
Run Code Online (Sandbox Code Playgroud)
如何使我的实例的__ init __方法使用实例名称字符串'c'?以防万一:
c=Class()
Run Code Online (Sandbox Code Playgroud)
我希望c.var等于'c'.
感谢您的回复,我正在实现持久性,而Class是持久对象的类.我希望__ init __在以下情况下向数据库添加条目:
c=Class()
Run Code Online (Sandbox Code Playgroud)
然后,假设:
del c
Run Code Online (Sandbox Code Playgroud)
稍后的:
c=Class()
Run Code Online (Sandbox Code Playgroud)
如果已存在条目"c",则sholuld使用数据库中的数据创建实例,否则创建新条目.
感谢您的回复,我正在实现持久性,而Class是持久对象的类.我希望__ init __在以下情况下向数据库添加条目:
c=Class()
Run Code Online (Sandbox Code Playgroud)
然后,假设:
del c
Run Code Online (Sandbox Code Playgroud)
稍后的:
c=Class()
Run Code Online (Sandbox Code Playgroud)
如果已存在条目"c",则sholuld使用数据库中的数据创建实例,否则创建新条目.
根据一个例子,我有三个模型:
class User(models.Model):
name = models.CharField(max_length=128)
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(User, through='Membership')
class Membership(models.Model):
person = models.ForeignKey(User)
group = models.ForeignKey(Group)
date_joined = models.DateField()
Run Code Online (Sandbox Code Playgroud)
添加成员有效.但是,如何删除单个成员资格实例(用户退出组),而不删除用户和组?
当我尝试删除它时:
u = User(request.user)
g = Group.objects.get(id=group_id, membership__user=u)
m = Membership(user=request.user, group=g)
m.delete()
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
/ groups/quit/1 /的AssertionError
无法删除成员资格对象,因为其id属性设置为None.
我遇到了某种类型的范围问题,它阻止实例变量被视图调用的助手正确初始化.
#sample_controller.rb
class SampleController < ApplicationController
def test
end
end
#application_controller.rb
helper_method :display
def display
if not defined? @display
return @display = "a"
else
return @display += "a"
end
end
#test.html.erb
<%= display %>
<%= display %>
<%= @display %>
<%= @display.reverse %>
Run Code Online (Sandbox Code Playgroud)
当显示样品/测试时,它会在"评估nil.reverse"时出现错误.这是令人惊讶的,因为显示的前两个调用应该初始化@display我会想到.如果删除<%= @ display.reverse%>,则输出为"a aa",表示辅助方法正在设置@display实例变量,但视图中无法访问它.
如果控制器被修改成为(使用原始视图代码):
class SampleController < ApplicationController
def test
display
end
end
Run Code Online (Sandbox Code Playgroud)
输出变成"aa aaa a a".如果我在控制器中进行2次调用,我会得到"aaa aaaa aa aa".因此,似乎只有在控制器中进行的调用才会修改SampleController实例变量,而视图中的调用将修改视图无法访问的ApplicationController的实例变量.
这是Rails中的错误还是我的误解,这是出于某种原因预期的功能?
我遇到这个bug的上下文是试图创建一个logged_in?ApplicationController方法,在第一次调用时设置@user变量,如果用户登录则返回true或false.除非在尝试在视图中使用它之前在控制器中添加了不必要的调用,否则这将无效.
我正在尝试创建一个代理对象,该对象使用闭包(let / proxy)为对象的某些方法添加一些功能,但是我很乐意从原始对象重写所有方法,我得到一个UnsupportedOpretationException,这里是一个例子:真实的对象
(def realcon (java.sql.DriverManager/getConnection "jdbc:h2:tcp://localhost:9092/test"))
(def con
(let [msg "FG>"
xcon rcon]
(proxy [java.sql.Connection] []
(createStatement []
(println msg) ;; access to closure context !
(.createStatement xcon)))))
(def stmt (.createStatement con))
;;output FG>
(def rs (.executeQuery stmt "select count(*) from serie_sat"))
Run Code Online (Sandbox Code Playgroud)
如果我从java.sql.Connection调用任何其他方法,则会得到UnsupportedOperationException,我可以手工代理所有方法,但是可能存在更好的方法!
谢谢
我有两个实例变量,head和tail.在代码中有一行:
head = tail = new Node<E>();
Run Code Online (Sandbox Code Playgroud)
这是否意味着Node类有两个实例,head和tail?我在这里很困惑.
我有一个名为EventManager的类,我在每个模块中调用这个类.我想到在主文件中创建一个EventManager的实例,并在每个模块中使用该实例.我的问题是:
如何从数组副本中删除对象而不将其从原始数据中删除?
我有一个全局变量:
var userTrickList = [];
Run Code Online (Sandbox Code Playgroud)
在函数内部,我复制了该全局数组:
var tempUserTrickList = userTrickList;
Run Code Online (Sandbox Code Playgroud)
然后我使用removeItem我创建的函数来删除某个对象.
removeItem(considerTrick.IDName, tempUserTrickList);
function removeItem(item, list) {
//takes a string as 'item', finds in the array as 'list',
//then removes it from the list.
for(var i = 0; i < list.length; i++)
{
if(item === list[i])
{
list.splice(i,1);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,这个功能也将它从中删除userTrickList了.
有任何想法吗?这绝对是一个问题"removeItem(considerTrick.IDName, tempUserTrickList);",但我想不出解决方案.
我有一个在清单中定义的活动:
android:launchMode="singleInstance"
Run Code Online (Sandbox Code Playgroud)
现在我想从一个不知道它存在的不同活动(没有引用现有实例)并同时传入一个变量转移到该活动.我曾经这样做(在我将其定义为singleInstance之前):
Intent intent = new Intent(this, receivingactivity.class);
intent.putExtra("somekey", somevalue);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
但现在这已不再适用了.我在onresume中接收了以下行的接收活动:
String somevalue = getIntent().getStringExtra("somekey");
Run Code Online (Sandbox Code Playgroud)
它返回null.如何将值传递给现有的接收活动(该活动始终处于活动状态且永远不会达到ondestroy但最大值会延迟到暂停)?
我试图为多态类树创建一些实例,但我不明白,
看,我的代码是:
data BTree a = BLeaf a | BBranch a (BTree a) (BTree a) deriving(Show)
data TTree a = TLeaf a | TBranch a (TTree a) (TTree a) (TTree a) deriving(Show)
class Tree a where
getName :: a -> a -- How should i declare this function?
instance Tree (BTree a) where
getName (BLeaf name) = name
getName (BBranch name lhs rhs) = name
instance Tree (TTree a) where
getName (TLeaf name) = name
getName (TBranch name lhs mhs …Run Code Online (Sandbox Code Playgroud) 假设有以下情况:
必须从大量的文件夹结构中检索日志文件,并将它们添加到List中.
哪种方案从机器中获取的资源更少?
LogFile file;
foreach (string filepath in folderfiles)
{
file = new LogFile { path = filepath,
machine = machineName,
user = userName };
files.Add(file);
}
Run Code Online (Sandbox Code Playgroud)
要么
foreach (string filepath in folderfiles)
{
LogFile logFile = new Logfile { path = filepath,
machine = machineName,
user = userName };
files.Add(file);
}
Run Code Online (Sandbox Code Playgroud)
它会有什么不同吗?