【问题标题】:python basic class question, where am i going wrongpython基本类问题,我哪里错了
【发布时间】:2019-12-12 15:21:53
【问题描述】:

我正在慢慢地尝试在课堂上集中注意力。我有一些我有点理解的工作示例,但有人可以向我解释为什么这不起作用吗?

class python:
  def __init__(self,name):
    self.name=name

  def changename(self,newname):
    self.name=newname

abc=python('python')

print abc.name

abc.changename = 'anaconda'

print abc.name

我在这里要做的就是在代码稍后的某个时间点更改 abc.name 的值(如果这是一个特殊的词,它不需要是名称,但我确实尝试了 name2 等,同样结果...)

如果我执行print abc.changename,那么我会得到输出 anaconda,但这并不是我真正想要的。

任何帮助将不胜感激。

另外...是否可以在代码生命周期的后期执行类似的操作?

def newstuff(self, value1, value2):
  self.newvalue1 = value1
  self.newvalue2 = value2

这样我就可以访问两个新的“事物”abc.newvalue1abc.newvalue2

这有意义吗??

对不起'事情;我仍在尝试掌握哪个是属性、对象、方法、项目等......

【问题讨论】:

  • abc.changename 是一种方法。你为什么要给它分配一个字符串:abc.changename = 'anaconda'?此外,当您刚开始学习 Python 时,请切换到 Python 3.x,因为 Python 2 将在 2020 年停止接收更新
  • 将 abc.changename = 'anaconda' 更改为 abc.changename('anaconda')。 changename 是一个函数,而不是一个变量,并且必须进行相应的处理。 :)
  • 不只是 2020;支持在 2020 年开始后结束。不到 19 天。

标签: python class python-2.x


【解决方案1】:

尝试更改此行:

abc.changename = 'anaconda'

到这里:

abc.changename('anaconda')

您定义了方法changename 来访问您的成员name。然后,在第一行中,您尝试不使用该方法直接访问该成员。

在第二种情况下,是的,它会起作用:

def newstuff(self, value1, value2):
    self.name1 = value1
    self.name2 = value2

但是您必须向您的班级添加 1 个成员,然后应该像这样访问该方法:

class python:
    def __init__(self, value1, value2):
        self.name1 = value1
        self.name2 = value2


abc=python('python1', 'python2')
abc.newstuff('snake', 'anaconda')

【讨论】:

    【解决方案2】:

    abc.changename 是一种方法。要使用它,请将其与括号和值一起写入其中。 abc.changename('anaconda') 希望对你有帮助

    【讨论】:

      【解决方案3】:

      您将abc.changename 声明为一个函数。使用abc.changename("Sandman112")调用它

      你所做的是将一个字符串分配给成员变量abc.changename,而不是你之前定义的类方法。

      【讨论】: