我是Python新手,我正在学习类函数。有谁知道这方面的任何好的来源/例子?这是我写的一个例子。我正在尝试阅读有关自我和 init
的更多信息class Example:
def __init__(a, b, c, d):
self.a = a
self.b = b
self.c = c
self.d = d
test = Example(1, 1, 1, 1)
我去过python.org,以及这个网站。我也一直在读初学者Python书籍,但我想了解更多信息。
感谢。
答案 0 :(得分:2)
这里有几个通用的说明:
_init_
(self,a,b,c)*)您正在定义特殊类型的功能是""的一部分(关联,绑定)Example类。创建未绑定的函数也是可能的(并且相当常见)。通常,在Python中,未绑定的函数很简单,称为"函数"而那些属于一个阶级的人被称为"方法" ......或"实例函数。" _init_
()是一种方法;特别是它是Python对象(类的实例)的初始化器。 _..._
(在所选关键字周围添加下划线字符的前缀和后缀)来表示"特殊"方法或属性名称...旨在降低其命名选择与您可能希望为自己的方法提供的有意义名称冲突的可能性。虽然您可以使用此 _XXXX_
命名其他方法和属性---但Python本身并不会将其视为错误 - 这样做是一个非常糟糕的主意。即使您没有选择任何当前定义的特殊名称,也不能保证未来某个版本的Python不会在以后与您的使用发生冲突。我所得到的要点就是......你想要学习如何将你的数据视为它的组合部分" (属性)以及更改,操作,验证和处理这些属性的输入,输出和可能存储的功能。
例如,如果您正在编写"代码断路器"程序来解决简单的密码你可能会实现一个"直方图"计算给定编码消息的字母频率的对象。这将具有属性(每个字母一个整数)和行为(将编码消息的端口馈送到实例中,将字符串拆分为单个字符,过滤掉所有非字母字符,将所有字母转换为上部或小写,并计算它们 - 即递增对应于每个字母的整数)。另外,您需要有一些方法来查询直方图...例如,在密文中获取按频率排序的字母列表。
一旦你有了这样的"直方图"那么你可以想办法将它用于你的求解器。例如,为了解决密码难题,您可以计算直方图,然后尝试替换" etaon"对于五个最常见的加密字母...然后检查有多少"部分"字符串(t.e表示"")匹配单词,尝试排列等等。这些中的每一个都可能是它自己的类。编程的一个关键点是你的直方图类可能对计算各种其他事物很有用(即使在简单的投票系统或流行度环境中)。特定的子类或实例化可能使其成为字母的直方图,而其他子类或实例可以重新用于其他类型的事物"你想要数。类似地,迭代某些列表的permutions的代码可以用于任何数量的模拟,优化和相关程序。 (事实上,Python的标准库已经包括"计数器"以及"排列""集合"和#34; itertools"模块中的功能,分别)。
当然,在学习编程时,你会反复听到所有这些概念。这是一个相当漫无边际的尝试,以启动这一进程。我知道我在这里有点重复 - 其中一部分是因为我在昨天早上7点开始上班后的凌晨4点打字了。但其中一部分也有教学目的。
答案 1 :(得分:1)
您的班级定义中存在错误。 始终在self
方法中包含变量__init__
。它表示对象本身的实例,应作为所有方法的第一个参数包含在内。
这门课你想完成什么?到目前为止,它只存储了一些变量。尝试添加一些方法来增加一些东西! Python中的类有很多可用资源。首先,你可能想尝试一下这个:
答案 2 :(得分:0)
我现在也在学习python,并且在codecademy.com上有一个非常好的介绍类
http://www.codecademy.com/tracks/python
它有一个部分,通过课程练习。希望这有帮助