我正在学习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个函数进行输出。
答案 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中的对象及其组成语言的方式。愚蠢的禅宗反应就像是“一切都是物体,但实际上只有少数特定的东西”。听起来确实与直觉相反,但是如果您能理解的话,那么更多的东西就会变得有意义了。