第一个Python对象

第一个Python对象,python,python-2.7,Python,Python 2.7,我以前在Java中做过面向对象的编码,但这是我第一次在Python中尝试。我在一所大学上了一堂光学课,似乎总是涉及到线性回归拟合。所以我决定只创建一个简单的对象,我可以使用它进行线性拟合,而无需太多麻烦。也就是说,我对Python对象还不是很了解,到目前为止,这证明有点困难 在这一点上,一切似乎都很好,除了一件我将要讨论的事情,但我希望在我的Python对象冒险中得到一些反馈。一件似乎很难的事情是为类变量指定新的值。另一个原因是我不太明白这些方法中的self参数是用来做什么的(它看起来几乎等同于

我以前在Java中做过面向对象的编码,但这是我第一次在Python中尝试。我在一所大学上了一堂光学课,似乎总是涉及到线性回归拟合。所以我决定只创建一个简单的对象,我可以使用它进行线性拟合,而无需太多麻烦。也就是说,我对Python对象还不是很了解,到目前为止,这证明有点困难

在这一点上,一切似乎都很好,除了一件我将要讨论的事情,但我希望在我的Python对象冒险中得到一些反馈。一件似乎很难的事情是为类变量指定新的值。另一个原因是我不太明白这些方法中的self参数是用来做什么的(它看起来几乎等同于Java中的“this”)。到目前为止,我的课程是:

__author__ = 'tristan'


import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit


class LinearFit:

__xdata = None
__ydata = None
__xerror = None
__yerror = None

def __init__(self, xdata, ydata, xerror = None, yerror = None):
    LinearFit.__xdata = xdata
    LinearFit.__ydata = ydata
    LinearFit.__xerror = xerror
    LinearFit.__yerror = yerror

def printxdata(self):
    print LinearFit.__xdata
下面是一个测试程序:

__author__ = 'tristan'

from LinearFit import LinearFit

x = [1,2,3,4,5]
y = [6, 7, 8, 9, 10]
z = LinearFit(x, y)
print z.printxdata()
我的输出是:

[1,2,3,4,5]
None
这是我现在的主要问题,为什么它没有打印出来(我之前提到的问题)?
谢谢您的帮助。

您的方法没有显式返回任何内容,因此它返回
None
。然后你把它打印出来。如果要返回值,则应使用
返回LinearFit.\uu扩展数据[:]
。您应该重新考虑使用首字母双下划线。

您的方法没有显式返回任何内容,因此它返回
None
。然后你把它打印出来。如果要返回值,则应使用
返回LinearFit.\uu扩展数据[:]
。您应该重新考虑使用首字母双下划线。

您的方法没有显式返回任何内容,因此它返回
None
。然后你把它打印出来。如果要返回值,则应使用
返回LinearFit.\uu扩展数据[:]
。您应该重新考虑使用首字母双下划线。

您的方法没有显式返回任何内容,因此它返回
None
。然后你把它打印出来。如果要返回值,则应使用
返回LinearFit.\uu扩展数据[:]
。你应该重新考虑使用首字母双下划线。

“Return”和“Print”是不同的东西。这就像要求某人给你一些东西或给你看一些东西

# first executes printxdata()
# then returns the result
print z.printxdata()

# a longer and easier to understand way:
result = z.printxdata()
print result
结果将是None,因为printxdata()不返回任何内容,它只在屏幕上打印

// in Java
public void printxdata() {
    // it just PRINTS
    System.out.println(LinearFit.__xdata)
    // NO return statement
}
很抱歉裁员,我只是想说清楚

编辑: 由于printxdata()已打印某些内容,因此无需再次使用print:

# replace this
print z.printxdata()

# with this
z.printxdata()
“退货”和“打印”是两码事。这就像要求某人给你一些东西或给你看一些东西

# first executes printxdata()
# then returns the result
print z.printxdata()

# a longer and easier to understand way:
result = z.printxdata()
print result
结果将是None,因为printxdata()不返回任何内容,它只在屏幕上打印

// in Java
public void printxdata() {
    // it just PRINTS
    System.out.println(LinearFit.__xdata)
    // NO return statement
}
很抱歉裁员,我只是想说清楚

编辑: 由于printxdata()已打印某些内容,因此无需再次使用print:

# replace this
print z.printxdata()

# with this
z.printxdata()
“退货”和“打印”是两码事。这就像要求某人给你一些东西或给你看一些东西

# first executes printxdata()
# then returns the result
print z.printxdata()

# a longer and easier to understand way:
result = z.printxdata()
print result
结果将是None,因为printxdata()不返回任何内容,它只在屏幕上打印

// in Java
public void printxdata() {
    // it just PRINTS
    System.out.println(LinearFit.__xdata)
    // NO return statement
}
很抱歉裁员,我只是想说清楚

编辑: 由于printxdata()已打印某些内容,因此无需再次使用print:

# replace this
print z.printxdata()

# with this
z.printxdata()
“退货”和“打印”是两码事。这就像要求某人给你一些东西或给你看一些东西

# first executes printxdata()
# then returns the result
print z.printxdata()

# a longer and easier to understand way:
result = z.printxdata()
print result
结果将是None,因为printxdata()不返回任何内容,它只在屏幕上打印

// in Java
public void printxdata() {
    // it just PRINTS
    System.out.println(LinearFit.__xdata)
    // NO return statement
}
很抱歉裁员,我只是想说清楚

编辑: 由于printxdata()已打印某些内容,因此无需再次使用print:

# replace this
print z.printxdata()

# with this
z.printxdata()

可能还应该重新考虑将所有内容存储在类中而不是实例中。我怎样才能创建一个只打印而不返回任何内容的方法呢。如果它是Java,就可以在方法中使用void键项,而不会返回任何内容。是否有类似的东西,或者它总是会回来。还有,我为什么不把双破折号放在前面呢?我希望尽可能保持隐私和客户友好。您不能返回“无”。但是你可以避免打印它。首字母双下划线并没有什么私密性,所以作为一个Java用户,你经常使用private,但我想它在Python中不起作用,所以我会避免使用它。还谈到了退货问题。如果我们在返回中混合使用字符串和浮点类型,它的工作原理与我打印它的方式相同?它将按照您的指示工作。但是,如果可能的话,不要混合返回类型。可能还应该重新考虑将所有内容存储在类而不是实例上。我如何才能创建一个只打印而不尝试返回任何内容的方法。如果它是Java,就可以在方法中使用void键项,而不会返回任何内容。是否有类似的东西,或者它总是会回来。还有,我为什么不把双破折号放在前面呢?我希望尽可能保持隐私和客户友好。您不能返回“无”。但是你可以避免打印它。首字母双下划线并没有什么私密性,所以作为一个Java用户,你经常使用private,但我想它在Python中不起作用,所以我会避免使用它。还谈到了退货问题。如果我们在返回中混合使用字符串和浮点类型,它的工作原理与我打印它的方式相同?它将按照您的指示工作。但是,如果可能的话,不要混合返回类型。可能还应该重新考虑将所有内容存储在类而不是实例上。我如何才能创建一个只打印而不尝试返回任何内容的方法。如果它是Java,就可以在方法中使用void键项,而不会返回任何内容。是否有类似的东西,或者它总是会回来。还有,我为什么不把双破折号放在前面呢?我希望尽可能保持隐私和客户友好。您不能返回“无”。