python什么叫类,Python中类的用法

  python什么叫类,Python中类的用法

  类是什么

  类是一种结合信息和行为的方式。比如,我们考虑在物理模拟中建造一艘宇宙飞船。首先要做的是追踪飞船的坐标(x,y)。守则中的船舶形式如下:

  classRocket():

  def__init__(self):

  #Eachrockethasan(x,y)位置

  self.x=0

  Self.y=0在类中要做的第一件事是定义__init__函数。创建对象时,将执行__init__函数,为所需参数设置初始值。自我稍后介绍。简而言之,它是一种允许你访问类中变量的语法。

  到目前为止,Rocket类已经存储了两部分信息,但是它什么也做不了。火箭类的第一个核心行为是:动。代码如下:

  classRocket():

  # rocket simulates rocketshipforame,

  #oraphysicssimulation。

  def__init__(self):

  #Eachrockethasan(x,y)位置。

  self.x=0

  self.y=0

  defmove_up(self):

  # increment they-position of rocket。

  Self.y=1现在Rocket类存储了一些信息,可以做一些事情。但是你还没有真正建造一艘属于你自己的宇宙飞船。下一步是用下面的代码构建你自己的飞船:

  classRocket():

  # rocket simulates rocketshipforame,

  #oraphysicssimulation。

  def__init__(self):

  #Eachrockethasan(x,y)位置。

  self.x=0

  self.y=0

  铌

  sp;print("Created")

  

  defmove_up(self):

  #Incrementthey-positionoftherocket.

  self.y+=1

  #CreateaRocketobject.

  my_rocket=Rocket()

  print(my_rocket)为了使用类,创建一个变量如 my_rocket 。然后用类名后跟圆括号给这个变量赋值。这样就创建了一个类的对象。对象是类的实例,它有类中所有变量的拷贝,并且可以做类中所有定义的行为。在上述代码中,你可以看到变量 my_rocket 是一个来自 __main__ 程序文件中的 Rocket 对象,这个程序文件存储在内存中的特定位置。

  有了类你就可以定义对象并且使用它的方法。实例如下:

  

classRocket():

  #Rocketsimulatesarocketshipforagame,

  #oraphysicssimulation.

  

  def__init__(self):

  #Eachrockethasan(x,y)position.

  self.x=0

  self.y=0

  

  defmove_up(self):

  #Incrementthey-positionoftherocket.

  self.y+=1

  #CreateaRocketobject,andhaveitstarttomoveup.

  my_rocket=Rocket()

  print("Rocketaltitude:",my_rocket.y)

  my_rocket.move_up()

  print("Rocketaltitude:",my_rocket.y)

使用对象名和点符号来访问对象的变量和方法。因此为了得到 my_rocket 的 y 值,使用 my_rocket.y 。使用 my_rocket.move_up() 来访问 move_up() 函数。

  一旦类定义好,你就可以创建任意数量的对象。每个对象都有独立的变量空间,互不影响。如下所示:

  

classRocket():

  #Rocketsimulatesarocketshipforagame,

  #oraphysicssimulation.

  

  def__init__(self):

  #Eachrockethasan(x,y)position.

  self.x=0

  self.y=0

  

  defmove_up(self):

  #Incrementthey-positionoftherocket.

  self.y+=1

  

  #Createafleetof5rockets,andstoretheminalist.

  my_rockets=[]

  forxinrange(0,5):

  new_rocket=Rocket()

  my_rockets.append(new_rocket)

  #Showthateachrocketisaseparateobject.

  forrocketinmy_rockets:

  print(rocket)

如果你知道列表推导式,你也可以将代码改写成如下形式:

  

classRocket():

  #Rocketsimulatesarocketshipforagame,#Rocket

  #oraphysicssimulation.

  

  def__init__(self):

  #Eachrockethasan(x,y)position.

  self.x=0

  self.y=0

  

  defmove_up(self):

  #Incrementthey-positionoftherocket.

  self.y+=1

  

  #Createafleetof5rockets,andstoretheminalist.

  my_rockets=[Rocket()forxinrange(0,5)]

  #Showthateachrocketisaseparateobject.

  forrocketinmy_rockets:

  print(rocket)

每一个 rocket 在内存中都是独立的。拥有自己的 x 和 y 。你可以通过移动不同的飞船来证明这点。如下所示:

  

classRocket():

  #Rocketsimulatesarocketshipforagame,

  #oraphysicssimulation.

  

  def__init__(self):

  #Eachrockethasan(x,y)position.

  self.x=0

  self.y=0

  

  defmove_up(self):

  #Incrementthey-positionoftherocket.

  self.y+=1

  

  #Createafleetof5rockets,andstoretheminalist.

  my_rockets=[Rocket()forxinrange(0,5)]

  #Movethefirstrocketup.

  my_rockets[0].move_up()

  #Showthatonlythefirstrockethasmoved.

  forrocketinmy_rockets:

  print("Rocketaltitude:",rocket.y)

现在类的语法对你来说或许不是很明了。但是考虑不用类来创建一个飞船。你或许会将 x 和 y 存储在一个字典中,即便是定义很少的飞船都需要写出很多丑陋的,难以维护的代码。当加入越来越多的特性,代码会变得越来越难以维护。这时候你就会发现基于真实世界模型的类是多么的高效。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: