我仍然不知道self和init是怎么做的,尽管读了一个又一个小时,已经筋疲力尽了。我最终放弃了理解它的功能,而是知道我需要在代码中包含它(实际上,我甚至不确定是否需要它)。在
无论如何,为了学习这些东西,我在一些教程中找到了一个示例程序,并决定尝试在不引用任何示例的情况下自行复制它。在
我这样做可能是完全错误的,但我想做的是有一个功能,当按下一个按钮来创建一个新的病历时,这个函数就会被调用。我所关注的是如何传递这些变量(它们被称为属性还是变量?)从按键功能到病人分类?我只是把那个函数作为一个方法放在那个类里面吗?还有,每次按下按钮我都可以创建一个新的病人吗?在
def buttonpress():
name = input("what's your name")
age = input("what's your age")
totalpatients +=1
class patients:
def __init__(self, name, age):
self.name = name
self.age = age
def displaypatient(self):
print self.age, self.name
firstpatient=patients(name, 16)
firstpatient.displaypatient()
类基本上由数据(属性)和对数据进行操作的函数(方法)集合组成。每个类的都有自己的方法副本。在
因此,类的每个*方法都在类的某个实例上运行,因此该方法需要知道它在哪个实例上操作。这就是
self
对self
的意义,它只表示方法正在处理的实例。在例如:
现在,在这个例子中,注意我在类之外设置了
.value
。您可以这样做(Python允许您在几乎任何实例上设置任何属性),但对每个类都这样做有点麻烦。在这就是
__init__
的作用。这是一个有特殊意义的方法(因此有双下划线)。在本例中,它是在创建类时调用的方法(当您使用parens调用类以生成新实例时)。init
这里代表initialization
:它是初始化类属性的函数。在创建类时,它接受的任何参数(超过self
)都是预期的。在因此,我们可以将示例改为:
^{pr2}$它的工作原理是一样的,但要稍微好一些(因为我们不必在新的
House
上继续设置.value
)。在*除了staticmethods和classmethods,以及
__new__
我觉得几周前我和你在同一条船上,虽然他们仍然很动摇,但我会尽力向你解释自我和自我。请温柔点,其他评论者!;)
我要先解释一下“自我”,因为它可能会使init更清楚。当我想上课时,我可以:
好吧。我们有一些事情要谈的只是这个布局。我们已经确定了汽车应该做什么,但我们还没有做任何事情。(我保证这一切都是相关的!) 为了创建car的实例(一次出现),我们可以将car对象赋给一个新变量:
^{pr2}$现在我可以使用我们在car类中定义的所有方法,比如drive! 我们可以通过键入以下内容来调用该函数:
这会打印“vroom” 我可以在同一个程序中创建car()类的第二个实例(尽管它是一个完全不同的对象),方法是:
现在,《盗梦空间》开始了。。。我做了一个非常简单的课程,课程变得非常庞大和可怕,几乎不可能在一个晚上就全部理解,但我现在要向你解释一下自我。在
“myCar”是我用来保存我创建的car对象的变量,如果我有其他方法需要引用该对象,它就变成了“self”参数。 本质上,我的车.vroom()就是说自我.vroom(),如果我需要在类的另一个方法中引用.vroom()。在
总而言之,我们有这样的东西:
另一种解释方法是,就像在普通函数中一样,self只是调用函数的对象的占位符。在
现在,如果有意义的话太棒了,否则我会再编辑一次。 definit(self):使用相同的理论,从类中获取一个对象,并在类每次创建对象时向它提供指令。在
你可以使用definit并用它做一些疯狂的事情,比如在里面你可以立即调用其他方法和东西。基本上,就像说“嘿,物体!你还活着,去检查一下init函数里面有什么,你需要所有这些东西!快走!在
告诉我这是否有帮助,或者我能说得更清楚些。就像我说的,我只是把我的头都裹在这上面,所以也许我的解释需要一些工作。干杯:)
您尝试使用基本的面向对象编程,但需要了解类定义对象和属性。在
在下面的代码中,我们定义了一个Patient类:
它有一个名为
__init__
的方法,Python将其定义为初始化类中新对象时调用的方法,它有几个参数:第二个方法是一个我们可以调用对象的方法,让它返回一个我们可能希望打印出来的方法。在
下面的代码创建了一个病人,并从display方法打印了它的表示。在
^{pr2}$下面是一段代码,可以用来构建一个病人数组,以便我们在以后的工作中使用。在
一旦我们在
patients
数组中建立了一个患者列表,我们就可以循环访问其中的对象,然后按正常方式操作或显示它们。在相关问题 更多 >
编程相关推荐