为什么要获取NameError:名称“self”未定义?

2024-04-20 12:27:26 发布

您现在位置:Python中文网/ 问答频道 /正文

当我尝试运行此python代码时:

def convertProjection(self,x,y,from_crs,to_crs):
    crsSrc = QgsCoordinateReferenceSystem(from_crs)
    crsDest = QgsCoordinateReferenceSystem(to_crs)
    xform = QgsCoordinateTransform(crsSrc, crsDest)
    pt = xform.transform(QgsPoint(x,y))
    return pt.x, pt.y

# Remove the "EPSG:" part

from_crs = 3857
to_crs = 4326
x = -11705274.6374
y = 4826473.6922
lon, lat = self.convertProjection(x,y,from_crs,to_crs)

发生此错误:

/usr/bin/python3.5 /home/jithin/PycharmProjects/PythonTests/XYTOLatLong_Conversion.py
Traceback (most recent call last):
  File "/home/jithin/PycharmProjects/PythonTests/XYTOLatLong_Conversion.py", line 36, in <module>
    lon, lat = self.convertProjection(x,y,from_crs,to_crs)
NameError: name 'self' is not defined

感谢您的帮助。。。。谢谢。。。你知道吗


Tags: tofromselfpthomelonlatxform
2条回答

看起来像是你从类中复制的代码。你知道吗

在Python中,按照惯例(pep8),“self”是指对象的当前实例。如果您的代码在类之外,则不会定义self,因为没有实例。你知道吗

你应该改变

def convertProjection(self,x,y,from_crs,to_crs):

def convertProjection(x,y,from_crs,to_crs):

然后调用不带“self”的函数。你知道吗

convertProjection是在类外部定义的正则函数,因此不应将其用作绑定方法。你知道吗

更改:

def convertProjection(self,x,y,from_crs,to_crs):

收件人:

def convertProjection(x,y,from_crs,to_crs):

和变化:

lon, lat = self.convertProjection(x,y,from_crs,to_crs)

lon, lat = convertProjection(x,y,from_crs,to_crs)

相关问题 更多 >