首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用类的__init__属性并附加到该属性

调用类的__init__属性并附加到该属性
EN

Stack Overflow用户
提问于 2013-04-23 05:41:16
回答 2查看 232关注 0票数 0

我试图将一个项目附加到一个外部类的参数中,这个外部类是一个列表,但我需要创建一个实例。但是如何在不使用同一类实例的情况下为该类的参数创建一个实例呢?下面是我想要做的一个小例子

代码语言:javascript
复制
  class A(object):
      def __init__(self, list1, arg1)
          self.list1 = list1
          self.arg1 = arg1

  class B(object):
      def __init__(self, arg2, arg3)
          self.arg2 = arg2
          self.arg3 = arg3

      def method1(self, arg4)
          self.arg4 = arg4
          if 0 < 1:
              A(A.list1, A.arg1).list1.append('newitem')
          return list1

我应该怎么做才能将该newItem附加到list1?

如果我没能很好的解释,我很抱歉。我真的很困惑

编辑(添加我的实际代码)

代码语言:javascript
复制
class SimpleVirus(object):

    def __init__(self, maxBirthProb, clearProb):
        self.maxBirthProb = maxBirthProb
        self.clearProb = clearProb


    def reproduce(self, popDensity):
        self.popDensity = popDensity 
        reproduceProb = self.getMaxBirthProb() * (1 - popDensity)
        child = SimpleVirus(self.getMaxBirthProb(),  self.getClearProb())
        VirusL = Patient.getVirusesList()
        if random.random() <= reproduceProb:
                #Down here is where I need to append to the "viruses" list
            Patient(viruses, maxPop).viruses.append(child)
            return child
        else: 
            raise NoChildException()


class Patient(object):

    def __init__(self, viruses, maxPop): #viruses is a list

        self.viruses = viruses
        self.maxPop = maxPop
EN

回答 2

Stack Overflow用户

发布于 2013-04-23 06:46:07

您的术语很混乱;“调用类参数”对我没有任何意义。

您的代码被破坏了;您在A.__init__参数列表中有list1arg1,但是在主体中使用了arg2。请在示例中使用有意义的名称,并剪切和粘贴您正在运行的实际代码,以及您得到的实际错误消息。

在附加字符串之前,您希望Alist1arg2是什么?例如,如果您希望追加一个空列表,arg2的值为零,则执行以下操作:

代码语言:javascript
复制
A([],0).list1.append('newitem')
票数 0
EN

Stack Overflow用户

发布于 2013-04-23 10:13:37

我正在试着理解你的代码。这部分应该删除,因为它没有任何意义:

代码语言:javascript
复制
self.arg4 = arg4

只需在init方法中定义和初始化类变量。这里的arg4是您的方法的一个输入,您将只通过它的名称来引用它,所以不需要该行。

这部分也是有问题的:

代码语言:javascript
复制
A(A.list1, A.arg1).list1.append('newitem')

首先,您必须创建类的一个实例或对象,然后才能将某些内容附加到它的一个变量中。所以最好的方法是假设arg4是A类的一个实例:

代码语言:javascript
复制
class A(object):
  def __init__(self, list1, arg1):
      self.list1 = list1
      self.arg1 = arg1

class B(object):
  def __init__(self, arg2, arg3):
      self.arg2 = arg2
      self.arg3 = arg3
  def method1(self, arg4):
      if 0 < 1:
          arg4.list1.append('newitem')
      return arg4.list1

下面是如何在python shell中测试它。

代码语言:javascript
复制
>>> arg = A ([],1)
>>> b = B(2,3)
>>> b.method1(arg)
['newitem']
>>> 

首先,我创建了一个名为arg的类A的实例。然后是名为b的类B的对象。最后,我调用了b的method1,参数是arg。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16157228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档