如果可以通过简单的打印方法获得结果,为什么要在类中使用函数?

时间:2018-12-04 15:36:26

标签: python

我正在学习python类,并使用在线资源学习python。但是我有点困惑。下一课的输出是相同的。

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

  def myfunc(self):
    print("Hello my name is " + self.name)

p1 = Person("John", 36)
p1.myfunc()

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

p1 = Person("John", 36)
print("Hello My name is " + p1.name)

如果两个类的输出相同,那么为什么要使用2个函数进行输出。

4 个答案:

答案 0 :(得分:1)

假设您现在有1000个人。好吧

如果使用第二种方法(Person类中只有一个函数)。

您将需要很多行来打印所有内容:

p1 = Person("John", 36)
print("Hello My name is " + p2.name)
p2 = Person("Peter", 35)
print("Hello My name is " + p2.name)
p2 = Person("Don", 35)
print("Hello My name is " + p3.name)
... and so on

如果他们要求更改行以将年份添加到打印行中,该怎么办。 好吧,这是很多工作。 这就是为什么您最好对其使用函数。要代码重用。

如果您有一种可以打印出来的方法,只需更改它就可以了。

def myfunc(self):
    print("Hello my name is " + self.name + " and i have " + self.years + "years"

答案 1 :(得分:1)

由于您正在学习语言,因此您没有太多的东西可以实际处理您所处理的数据。像许多其他初学者一样,您可以使用print“在控制台日志中显示某些内容”。但是在现实生活中,yon不想将数据发送到控制台。您可能要在UI的标签或按钮中显示它,可能需要通过电子邮件或网络套接字将此数据发送给某人,或者可能需要在网页上显示它。这就是为什么首选类方法Person.myFunc的原因,因此您可以将过程封装在类中。

在现实世界中,Person.myFunc()可能不会调用print(),而是会返回结果,以便您可以对它进行一些有用的操作。

答案 2 :(得分:0)

如您所愿,其中一个是附加到Person类的函数。像这样定义的函数称为methods

在您的示例中,使用哪种可能是个人喜好。

通常,在调用方法时,它们作用于该类的实例/变量。该示例可能是“米老鼠”示例,以展示如何制作方法

答案 3 :(得分:0)

本课程正在教您如何上课。类与函数非常相似,只不过它将一堆函数组合在一起。尝试将一个函数放在一个函数中,以帮助向自己说明。

def func_1():
    print('first function is running')
    def func_2():
        print('2nd function is running)

我并不是100%的在函数中嵌套函数的最佳实践是什么。。这只是一个例子。

无论如何,将func_1视为您的类并将func_2视为您的方法。 python处理类的方式之间存在细微的差异,这使它有些不同,但是本质上它们的逻辑是相同的。

您应该更多地研究python中的对象及其组成语言的方式。愚蠢的禅宗反应就像是“一切都是物体,但实际上只有少数特定的东西”。听起来确实与直觉相反,但是如果您能理解的话,那么更多的东西就会变得有意义了。