python学习笔记9

  1. 类的创建:

class Dog():
‘’‘一次模拟小狗的简单尝试’’’
def init(self, name, age):
‘’‘初始化属性name和age’’’
self.name = ahua
self.age = 3
def sit(self):
‘’‘模拟小狗被命令时蹲下’’’
print(self.name.title() + " is now sitting.")
def roll_over(self):
‘’‘模拟小狗被命令时打滚’’’
print(self.name.title() + " rolled over!")

我们定义了一个名为Dog的类。根据约定,在Python中,首字母大写的名称指的是类。
这个类定义中的括号是空的,因为我们要从空白创建这个类。

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

    class Dog():
    ‘’‘一次模拟小狗的简单尝试’’’
    def init(self, name, age):
    ‘’‘初始化属性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!")

    my_dog=Dog(‘white’,6)
    print("My dog’name is "+my_dog.name.title()+’.’)
    print("My dog’age is "+str(my_dog.age)+’.’)

    my_dog.sit()
    my_dog.roll_over()
    因为类Dog()的初始化方法中,self是内部传递的变量,所以实例化的时候就不用传递进去了。

  2. 类的属性可以在实例化的时候对其进行修改,或者用方法修改也可以,即写一个方法对属性进行操作。

  3. 类的继承:
    编写类时,并非总是要从空白开始。如果你要编写的类是另一个现成类的特殊版本,可使用继承。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。
    4.1 子类的方法_init_()
    创建子类的实例的时候,Python首先需要完成的任务是给父类的所有属性赋值。
    class ElectricCar(Car):
    “”“电动汽车的独特之处”""
    def init(self, make, model, year):
    “”“初始化父类的属性”""
    super().init(make, model, year)
    my_tesla = ElectricCar(‘tesla’, ‘model s’, 2016)
    print(my_tesla.get_descriptive_name())
    –初始化父类的属性很重要。
    首先是Car类的代码。创建子类时,父类必须包含在当前文件中,且位于子类前面。在处,我们定义了子类ElectricCar。定义子类时,必须在括号内指定父类的名称。方法__init__()接受创建Car实例所需的信息。处的super()是一个特殊函数,帮助Python将父类和子类关联起来。这行代码让Python调用ElectricCar的父类的方法__init__(),让ElectricCar实例包含父类的所有属性。父类也称为超类(superclass),名称super因此而得名。子类的运用使得创建类的时候简单方便。
    4.2父类的方法重写
    对于父类的方法,只要它不符合子类模拟的实物的行为,都可对其进行重写。为此,可在子
    类中定义一个这样的方法,即它与要重写的父类方法同名。这样,Python将不会考虑这个父类方
    法,而只关注你在子类中定义的相应方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值