初学者有课的问题

0 python class

我正在研究O'Reilly的"学习Python"并且遇到课程问题.我想我理解这个概念,但在实践中偶然发现了这个问题.Fron第88-89页:

>>> class Worker:
def __innit__(self, name, pay):
    self.name=name
    self.pay=pay
    def lastName(self):
        return self.name.split()[-1]
    def giveRaise(self, percent):
        self.pay*=(1.0+percent)
Run Code Online (Sandbox Code Playgroud)

然后这本书说"像一个函数一样调用类生成一个新类型的实例......等"并给出了这个例子.

bob = Worker('Bob Smith', 50000)
Run Code Online (Sandbox Code Playgroud)

这给了我这个错误:

TypeError:此构造函数不带参数.

然后我开始嘀咕亵渎.那么我在这里做错了什么?

谢谢您的帮助.

Chr*_*s R 8

大卫,你输错了 __init__

正确的拼写是这样的:

def __init__(self, name, pay):
    self.name=name
    self.pay=pay
def lastName(self):
    return self.name.split()[-1]
def giveRaise(self, percent):
    self.pay*=(1.0+percent)
Run Code Online (Sandbox Code Playgroud)


Ale*_*lli 5

一个拼写错误:它是__init__,而不是__innit__- 只有一个n.

你也有一些缩进问题,但我认为这些问题可能只是因为复制粘贴问题,或者你SyntaxErrorTypeError关联之前就已经开始了;-).

所以你的代码应该是:

class Worker(object):
    def __init__(self, name, pay):
        self.name=name
        self.pay=pay
    def lastName(self):
        return self.name.split()[-1]
    def giveRaise(self, percent):
        self.pay*=(1.0+percent)
Run Code Online (Sandbox Code Playgroud)

我也添加了(object)to class Worker-in Python 3.*它没关系,但在2.*它确实(甚至在3.*它没有伤害,无论如何;-).这使得课程"新风格"在初级阶段无关紧要,但只要你开始想要做任何"酷和有趣"的事情,比如添加属性;-).