python学习9(函数)

一、 方法__init__()
类中的函数称为方法;你前面学到的有关函数的一切都适用于方法,就目前而言,唯一重要
的差别是调用方法的方式。处的方法__init__()是一个特殊的方法,每当你根据Dog类创建新实
例时,Python都会自动运行它。在这个方法的名称中,开头和末尾各有两个下划线,这是一种约
定,旨在避免Python默认方法与普通方法发生名称冲突。
我们将方法__init__()定义成了包含三个形参:self、name和age。在这个方法的定义中,形
参self必不可少,还必须位于其他形参的前面。为何必须在方法定义中包含形参self呢?因为
Python调用这个__init__()方法来创建Dog实例时,将自动传入实参self。每个与类相关联的方法
调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。
我们创建Dog实例时,Python将调用Dog类的方法__init__()。我们将通过实参向Dog()传递名字和
年龄;self会自动传递,因此我们不需要传递它。每当我们根据Dog类创建实例时,都只需给最
后两个形参(name和age)提供值。
处定义的两个变量都有前缀self。以self为前缀的变量都可供类中的所有方法使用,我们
还可以通过类的任何实例来访问这些变量。self.name = name获取存储在形参name中的值,并将
其存储到变量name中,然后该变量被关联到当前创建的实例。self.age = age的作用与此类似。

像这样可通过实例访问的变量称为属性。
Dog类还定义了另外两个方法:sit()和roll_over()(见)。由于这些方法不需要额外的信
息,如名字或年龄,因此它们只有一个形参self。我们后面将创建的实例能够访问这些方法,换
句话说,它们都会蹲下和打滚。当前,sit()和roll_over()所做的有限,它们只是打印一条消息,
指出小狗正蹲下或打滚。但可以扩展这些方法以模拟实际情况:如果这个类包含在一个计算机游
戏中,这些方法将包含创建小狗蹲下和打滚动画效果的代码。如果这个类是用于控制机器狗的,
这些方法将引导机器狗做出蹲下和打滚的动作。

 

二、给属性指定默认值

  类中的每个属性都必须有初始值,哪怕这个值是0或空字符串。在有些情况下,如设置默认
值时,在方法__init__()内指定这种初始值是可行的;如果你对某个属性这样做了,就无需包含
为它提供初始值的形参。

class Car():
def __init__(self, make, model, year):
"""初始化描述汽车的属性"""
    self.make = make
    self.model = model
    self.year = year
    self.odometer_reading = 0
def get_descriptive_name(self):
    --snip--
def read_odometer(self):
"""打印一条指出汽车里程的消息"""
    print("This car has " + str(self.odometer_reading) + " miles on it.")
my_new_car = Car('audi', 'a4', 2016)
print(my_new_car.get_descriptive_name())
my_new_car.read_odometer()

 

posted @ 2017-12-19 16:32  是你的鱼尾纹  阅读(164)  评论(0)    收藏  举报