我写了这个程序,但是我不知道自己缺少什么

时间:2019-04-19 20:19:38

标签: python-3.x

我是python编程的新手,所以我没有收到关于我的错误的信息。请帮助我更正此代码。

我试图找出问题所在,但作为一名新程序员,我没有得到

class students:
  def __init(self,name,age):
    self.name = name
    self.age = age

  def myfunc(self):
    print("Hello i am " + self.name)

p1 = students("Sumit", 28)
p1.myfunc()

它不应该给出错误,但是它显示错误,即对象无法通过类似的操作。我不知道怎么了

2 个答案:

答案 0 :(得分:2)

您的构造函数(__init__)的每一侧应具有两个uderscore:

class students:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def myfunc(self):
        print("Hello i am " + self.name)

p1 = students("Sumit", 28)
p1.myfunc()

许多python'internals'遵循这种做法,在每边被两个下划线包围。例如,您可以使用__dict__关键字访问某个类或命名空间中的变量。

print(p1.__dict__) # Will print {'name': "Sumit", 'age': 28}

答案 1 :(得分:0)

在init函数之后,您缺少双下划线。应该是下面的样子

class students:
def __init__(self, name, age):
    self.name = name
    self.age = age

def myfunc(self):
    print("Hello i am " + self.name)

p1 = students("Sumit", 28)
p1.myfunc()

这称为魔术方法。 Python提供了这种方法来将其用作运算符重载。