如何创建python方法

时间:2018-12-07 15:52:43

标签: python

我已经经历了一个小时左右的几个问题,但找不到为什么我的代码无法正常工作。这是代码。我尝试将正文更改为类似name.self的形式,但它返回相同的错误。这个问题已经问过几次了,但是很遗憾,我没有找到任何解决方法。

class Employees(object):
    def _init_(self,name,rate,hours):
        self.name=name
        self.rate=rate
        self.hours=hours
        staff=Employees("Wayne",20,8,5)
print(staff.name,staff.rate,staff.hours)

我收到以下错误:

NameError: name 'staff' is not defined

5 个答案:

答案 0 :(得分:5)

该构造函数需要命名为__init__(请注意双下划线) 此外,您的缩进在这里无法使用。我认为您想要这样的东西:

class Employees(object):
  def __init__(self,name,rate,hours):
    self.name=name
    self.rate=rate
    self.hours=hours

staff = Employees("Wayne",20,8)
print(staff.name,staff.rate,staff.hours)

答案 1 :(得分:4)

您需要使用带有下划线的init,如下所示,为了简化起见,请在问题代码中添加缩进。

value

由于class Employees(object): def __init__(self, name, rate, hours): self.name=name self.rate=rate self.hours=hours staff = Employees("Wayne",20,8,5) print(staff.name,staff.rate,staff.hours) 中有4个参数,因此会出现__init__() takes 4 positional arguments but 5 were given TypeError。

对于费率,您是想做Employees("Wayne",20,8,5)

答案 2 :(得分:3)

 class Employee(object):
        def __init__(self, name, rate, hours):
            self.name = name
            self.rate = rate
            self.hours = hours

 staff = Employee("Wayne", 20, 8)
 print(staff.name, staff.rate, staff.hours)

几句话:

  1. 初始化方法称为__init__(),而不是_init_()
  2. 类名通常应为单数名词,因为单个实例通常对应于一个(真实世界)对象
  3. 缩进很重要

答案 3 :(得分:2)

我不确定我是否理解你的问题。但是您需要完整的 init 进行实例化。然后,我猜“ Wayne”是您的对象的一个​​实例(见下文)。

class Employee:
    def __init__(self, name, rate, hours):
        self.name = name
        self.rate = rate
        self.hours = hours

wayne = Employee("Wayne", 20, 8)

答案 4 :(得分:1)

由于TypeError是在staff方法的内部中定义的,因此将其设为局部变量,因此得到_init_。另外,创建新对象时不会自动调用_init_,而是调用__init__。最后,您给它传递了太多参数。更改为此:

class Employees(object):
    def __init__(self,name,rate,hours): #Note the two underscores
        self.name=name
        self.rate=rate
        self.hours=hours

staff = Employees("Wayne",20,8) #Now in the global scope
print(staff.name,staff.rate,staff.hours)