美文网首页
阅读《Python编程从入门到实践》Day09

阅读《Python编程从入门到实践》Day09

作者: 晓梅_aa3b | 来源:发表于2018-03-25 00:18 被阅读19次

    第九章(一)

    面向对象编程是最有效的软件编写之一。基于类创建对象时,每个对象都自动具备这种通用行为,然后可根据需要赋予每个对象独特的个性。根据类来创建对象被称为实例化。

    1、创建和使用类

    创建表示小狗的简单类——它表示的不是特定的小狗,而是任何的小狗。

    (1)创建Dog类

    根据Dog类创建的每个实例都将存储名字和年龄,并赋予了每条小狗蹲下(sit())和打滚(roll_over())的能力:

    class Dog():
        def __init__(self, name, age):
            self.name = name
            self.age = age
        def sit(self):
            print(self.name.title() + " is now sitting.")
        def roll_over(self):
            print(self.name.title() + " rolled over!")
    

    根据约定,在Python中,首字母大写的名称指的是类。
    方法init():
    类中的函数称为方法,前面有关函数的一切都适用于方法,目前唯一重要的差别是调用方法的方式。init()是一个特殊的方法,每当你根据Dog类创建新实例时,Python都会自动运行它。在这个方法的名称中,开头和末尾各有两个下划线,这是一种约定,旨在避免Python默认方法与普通方法发生名称冲突。其中的形参self必不可少,还必须位于其他形参的前面。Python调用这个方法时,会自动传入实参self。每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。每当我们根据Dog类创建实例时,都只需给self后面的形参提供值。在它下面定义的变量都有前缀self。以self为前缀的变量都可供类中的所有方法使用,可以通过类的任何实例来访问这些变量。可通过实例访问的变量成为属性。
    在Python 2.7中创建类:
    在Python2.7中创建类时,需要在括号内包含单词object。

    class ClassName(object):
    
    (2)根据类创建实例
    my_dog = Dog('willie', 6)
    print("My dog's name is " + my_dog.name.title() + ".")
    print("My dog is " + str(my_dog.age) + " years old.")
    # 输出:
    My dog's name is Willie.
    My dog is 6 years old.
    

    利用前面的Dog类创建实例。在这里,命名的约定很有用:我们通常可以认为首字母大写的名称指的是类,而小写的名称指的是根据类创建的实例。
    访问属性:
    使用句点表示法,这种语法演示了Python如何获悉属性的值。Python先找到实例,在查找与这个实例相关联的属性。
    调用方法:
    创建实例后,可以使用句点表示法来调用类中定义的任何方法。

    my_dog = Dog('willie', 6)
    my_dog.sit()
    my_dog.roll_over()
    # 输出:
    Willie is now sitting.
    Willie rolled over!
    

    要调用方法,可指定实例的名称和要调用的方法,并用句点分隔它们。
    创建多个实例:
    可按需求根据类创建任意数量的实例。

    my_dog = Dog('willie', 6)
    your_dog = Dog('lucy', 3)
    
    print("My dog's name is " + my_dog.name.title() + ".")
    print("My dog is " + str(my_dog.age) + " years old.")
    my_dog.sit()
    
    print("\nMy dog's name is " + your_dog.name.title() + ".")
    print("My dog is " + str(your_dog.age) + " years old.")
    your_dog.sit()
    # 输出:
    My dog's name is Willie.
    My dog is 6 years old.
    Willie is now sitting.
    
    My dog's name is Lucy.
    My dog is 3 years old.
    Lucy is now sitting.
    

    可按需求根据一个类创建任意数量的实例,条件是将每个实例都存储在不同的变量中,或占用列表或字典的不同位置。

    相关文章

      网友评论

          本文标题:阅读《Python编程从入门到实践》Day09

          本文链接:https://www.haomeiwen.com/subject/hkiccftx.html