如何创建python方法
我花了一个小时左右的时间研究了几个问题,但找不到为什么我的代码不起作用。这是代码。我尝试将主体更改为类似于如何创建python方法,python,Python,我花了一个小时左右的时间研究了几个问题,但找不到为什么我的代码不起作用。这是代码。我尝试将主体更改为类似于name.self的内容,但它返回相同的错误。这个问题已经被问了好几次,但不幸的是我没有找到任何解决办法 class Employees(object): def _init_(self,name,rate,hours): self.name=name self.rate=rate self.hours=hours st
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
几句话:
初始值设定项方法称为\uuu init\uuu()
,而不是\uinit()
类名通常应该是单数名词,因为单个实例通常对应于单个(真实世界)对象
缩进问题
构造函数需要命名为\uuuu init\uuuu
(注意双下划线)
此外,您的缩进不能在这里工作。我想你想要这样的东西:
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)
你需要在init中加下划线,如下所示,为了让它更容易,请在代码中添加缩进
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)
您将得到一个\uuuu init\uuuuu()接受4个位置参数,但给出了5个类型错误,因为您在员工(“Wayne”,20,8,5)
中有4个参数
关于费率,你是不是打算对员工(“Wayne”,20.8,5)
我不确定我是否理解你的问题。但是您需要一个完整的init进行实例化。那么,我猜“Wayne”是您的对象的一个实例(见下文)
您将得到一个TypeError
,因为staff
是在\u init\u
方法中定义的,使其成为局部变量。另外,创建新对象时不会自动调用\u init\u
,而是调用\u init\u
。最后,您向it传递了太多的参数。将其更改为:
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)
构造函数需要命名为\uuuu init\uuuuu
(请注意双下划线),而且print
调用需要处于缩进级别,在缩进级别上实际定义了staff
,这就是错误试图告诉您的内容。如何在不使用屏幕键盘的情况下生成这些下划线?还有,压痕全弄乱了。现在,您正在Employee
的构造函数中创建一个新的Employee
,这导致了一个无限递归,如果构造函数曾经被调用过(出于同样的原因,现在不是),那么这就不是特殊的“双宽度下划线”但是只有两个普通的下划线。这个字符的键盘快捷键是什么,对不起?@NelsonGon所有这些都是可以键入的,没有键盘快捷键。没错,没有快捷键。我该怎么做?对不起,我是个新手。@NelsonGon你把这两个下划线和一个特殊字符混淆了吗?只需键入其中的两个:\uuuu
如另一个答案中所述,您的代码将生成一个TypeError,因为\uuuu init\uuuu接受4个参数,但给定5个
好吧,我复制了OPs代码,他提供的参数太多了。我会调整它的,好的,会修好的。
class Employee:
def __init__(self, name, rate, hours):
self.name = name
self.rate = rate
self.hours = hours
wayne = Employee("Wayne", 20, 8)
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)