为什么会出现NameError:名称“ self”未定义?

时间:2018-09-01 10:49:53

标签: 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

感谢您的帮助。...谢谢...

2 个答案:

答案 0 :(得分:1)

好像您从一个类复制了该代码。

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

您应该更改

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

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

,然后在没有“ self”的情况下调用该函数。

答案 1 :(得分:0)

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)