python中说_name_没有被定义_名称'self'未在Python中定义(Name 'self' is not Defined in Python)...

名称'self'未在Python中定义(Name 'self' is not Defined in Python)

任何人都可以告诉我我需要做什么来解决“名称'自我'未定义”错误我在下面确定的线上?:

class FulfillWhseOrderAction(object):

def __init__(self, name):

self._action_name = name

self._as = actionlib.SimpleActionServer(self._action_name, pkg_commands.msg.FulfillWhseOrderAction, execute_cb=self.execute_cb)

self._as.start()

# *** ERROR HAPPENING HERE: ***

rospy.loginfo('%s: Executing warehouse order' % self._action_name)

if __name__ == '__main__':

rospy.init_node('node_ReceiveWhseOrder')

FulfillWhseOrderAction(rospy.get_name())

rospy.spin()

Can anyone tell me what I need to do to resolve the "Name 'self' not defined" error I'm getting on the line identified below?:

class FulfillWhseOrderAction(object):

def __init__(self, name):

self._action_name = name

self._as = actionlib.SimpleActionServer(self._action_name, pkg_commands.msg.FulfillWhseOrderAction, execute_cb=self.execute_cb)

self._as.start()

# *** ERROR HAPPENING HERE: ***

rospy.loginfo('%s: Executing warehouse order' % self._action_name)

if __name__ == '__main__':

rospy.init_node('node_ReceiveWhseOrder')

FulfillWhseOrderAction(rospy.get_name())

rospy.spin()

原文:https://stackoverflow.com/questions/20391669

2020-01-06 20:45

满意答案

self是发送到__init__函数的变量(称为对象)。 所以你无法从函数外部访问它。 将错误发生行缩进到函数内部。

class FulfillWhseOrderAction(object):

def __init__(self, name):

self._action_name = name

self._as = actionlib.SimpleActionServer(self._action_name, pkg_commands.msg.FulfillWhseOrderAction, execute_cb=self.execute_cb)

self._as.start()

# *** ERROR HAPPENING HERE: ***

rospy.loginfo('%s: Executing warehouse order' % self._action_name)

if __name__ == '__main__':

rospy.init_node('node_ReceiveWhseOrder')

FulfillWhseOrderAction(rospy.get_name())

rospy.spin()

这样可以解决问题

The self is a variable(call it an object) sent to the __init__ function. So you cannot access it from outside the function. Indent the error occuring line to be inside the function.

class FulfillWhseOrderAction(object):

def __init__(self, name):

self._action_name = name

self._as = actionlib.SimpleActionServer(self._action_name, pkg_commands.msg.FulfillWhseOrderAction, execute_cb=self.execute_cb)

self._as.start()

# *** ERROR HAPPENING HERE: ***

rospy.loginfo('%s: Executing warehouse order' % self._action_name)

if __name__ == '__main__':

rospy.init_node('node_ReceiveWhseOrder')

FulfillWhseOrderAction(rospy.get_name())

rospy.spin()

This will save the problem

2013-12-05

相关问答

在使用它之前定义类: class Something:

def out(self):

print("it works")

s = Something()

s.out()

您需要将self作为第一个参数传递给所有实例方法。 Define the class before you use it: class Something:

def out(self):

print("it works")

s = Something()

s.out()

Yo...

不用担心:)欢迎来到Python! 它正在抛出这个错误,因为它正在寻找一个不存在的全局变量 - 而且它不存在的原因是因为你没有达到if type == "accounts"条件! 尝试这个: for i in included:

global signs,accounts, regions

global sign_name, acc_name, rg_name

regions = "no region yet"

acc_name = "no acc_name yet"

if ...

您的线程正在运行模块的生命周期 。 在启动线程后立即退出Python程序。 那时,Python开始清理所有内容,包括清理模块全局变量。 __file__名称是首先要做的事情之一。 如果在模块末尾添加一个sleep,则__file__名称的长度足以让您的线程完成: import os

import time

from threading import Thread

def cur_dir():

current_dir = os.path.dirname(os.path.abspath(__...

self是发送到__init__函数的变量(称为对象)。 所以你无法从函数外部访问它。 将错误发生行缩进到函数内部。 class FulfillWhseOrderAction(object):

def __init__(self, name):

self._action_name = name

self._as = actionlib.SimpleActionServer(self._action_name, pkg_commands.msg.Fulfi...

您需要使用self参数引用实例上的方法。 另外,你的add()方法需要返回它生成的mylist变量,你不能将方法局部变量作为方法的属性引用: def display(self):

mylist = self.add()

z = min(mylist)

w = mylist.index(z)

def add(self):

list=[]

mylist=[]

for i in range(2):

self.name = raw_in...

我猜你正在使用Python 2.x ,在Python 2.x中, input实际上是在返回结果之前尝试评估输入,因此如果你输入一些名字,它会将其视为变量并尝试获取其值造成这个问题。 使用raw_input() 。 代替。 示例 - participant = raw_input("Participant name > ")

....

score = raw_input("Score for " + participant + "> ")

I am guessing you are using P...

它与任何版本的Python都不兼容。 hello (或file或任何其他参数名称)是仅在函数体中可用的名称。 当调用func(hello) Python将尝试在全局范围内查找名称hello并失败,因为未定义此类名称。 当Python试图在func体内查找hello它会成功,因为有一个带有该名称的参数。 以下作品: hello = 'Hello'

def func(hello):

print(hello)

func(hello)

因为函数调用func时会找到hello 。 It isn'...

如果没有ValueError则只分配end 。 如果int()引发异常,那么赋值永远不会发生 。 在try测试有效的end值(以便您不知道引发异常),或者指定一个默认值以便首先end 。 例如,以下内容不会抛出您的异常,并且如果输入了1或2以外的任何内容,仍会提示用户重新输入该号码: while True:

try:

end=int(input("If You Dont Want To Buy Anything Press 1 To Exit\nOr If You Woul...

您需要在定义函数后进行调用: def wanttodoagain()

print ("Hi whats your name?")

name = input ('')

print ("Hi, {}".format(name))

print ("So, do you want to do this again?????")

print ("Y/N, it has to be capital")

doagainanswer=input("")

if...

相关文章

Python 编程语言具有很高的灵活性,它支持多种编程方法,包括过程化的、面向对象的和函数式的。但最重

...

python2和python3的区别,1.性能 Py3.0运行 pystone benchmark的速

...

Python的文件类型 Python有三种文件类型,分别是源代码文件、字节码文件和优化代码文件

源代

...

python的官网:http://www.python.org/ 有两个版本,就像struts1和st

...

好久没有写了,还不是近期刚过的期末考试和期中考试 最近因为一个微信公众平台大赛在学phthon 找了本

...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值