《Python从入门到实践》学习笔记---第九章、类(面向对象)

《Python从入门到实践》学习笔记---第九章、类(面向对象),第1张

概述第九章、类一、创建和实用类#创建狗类classDog():def_init_(self,name,age):#初始化属性name和ageself.name=nameself.age=agedefsit(self):#模拟小狗被命令蹲下print(self.name.title()+'isnowsitti 第九章、类一、创建和实用类
#创建狗类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!")
1.方法__init__()

方法:类中的函数称为方法。

__init__()当我们根据类创建新实例时,Python都会自动执行这个函数。

self

是一个指向实例本身的引用,让实例能够访问类中的属性和方法以self为前缀的变量都可供类中的所有方法使用,我们还可以通过类的任何实例来访问这些变量

属性

在类中可以通过self直接访问的变量

self.name = name
二、创建实例
my_dog = Dog('willIE', 6)print('我的狗的名字是' + my_dog.name.Title() + '.')my_dog.sit()
2.1 访问属性 & 调用方法

采用句点 ==.==表示法

my_dog.name'''my_dog是实例name是实例中的属性'''my_dog.sit()#sit()是方法

类创建好以后就可以创建多个实例了

2.2 给属性指定默认值
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):        long_name = str(self.year) + ' ' + self.make + '' + self.model        return long_name.Title()    def red_odometer(self):        '''打印一条指出汽车历程的信息'''        print('这辆汽车一共走了' + self.odometer + '公里了!')        #在定义类时,直接给属性赋值就行
2.3 三种修改属性值的方式2.3.1 直接修改属性的值
new_car('audi', 'a4', 2016)#直接通过实例访问属性,然后修改属性的值就行new_car.odometer_reading = 23
2.3.2 通过方法修改属性的值

定义一个方法,通过这个方法修改属性的值

class Car():    --snip--    def update_odometer(self, mileage):        if mileage >= self.odometer_reading:            #这个函数用来给历程数指定特定的值            self.odometer_reading = mileage        else:            print('You can not roll back an odometer!')
2.3.3 通过方法对属性的值进行递增
class Car():    --snip--    def update_odometer(self, mileage):        --snip--    def increment_odometer(self, miles):        #将里程表读数增加指定的量        sefl.odometer_reading += miles
三、继承

什么时候继承?

编写的类是另一个现成类的特殊版本,可使用继承。

继承的特点:

一个类继承另一个类时,它将自动获得另一个类的所有属性和方法子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法原来的类称为父类,新的类称为子类
class ElectricCar(Car):    '''电动车特有的地方'''    def __init__(self, make, model, year):        '''初始化父类的属性'''        super().__init__(make, model, year)

注意:

创建子类时,父类必须包含在同一个文件中,且得在子类的前面定义子类是,必须在括号里指定父类的名称方法__init__()接受创建Car实例所需要的信息super()这个函数,让子类实例包含父亲的所有属性父类也称之为超类,因此也名为super3.1 给子类定义属性和方法

定义子类特有的方法

class Car():    --snip-- class ElectricCar(Car):    def __init__(self, make, model, year):shuxb        '''        电动汽车的独特之处        初始化父类属性,再初始化电动车特有属性        '''        super().__init__(make, model, year)        #在这里定义了一个新的属性        self.battery_size = 70    def describe_battery(self):        #打印一条描述电瓶容量的消息        print('这辆车的电瓶容量是'+str(self.battery_size))
3.2 重写父类的方法

为什么要重写父类方法?

如果父类的方法不符合子类模拟的事物的行为,则对其进行重写

如何重写?

在子类中定义一个与父类同名的方法,在运行时Python就会优先考虑子类中重写的方法

重写的意义?

能让子类对父类进行取其精华,弃其糟粕3.3 将大类拆分成小类比如前面电动车中,电瓶有关的方法和属性很多,就可以把电瓶相关的内容摘出去,单独作为一个类
#这是最开始的父类class Car():    --snip-- class Battery():    '''一次模拟电瓶车的简单尝试'''    def __init__(self, battery_size = 70):        self.battery_size = battery_size    def describe_battery(self):        #打印一条描述电瓶容量的消息        pring('这辆车的电瓶容量是'+str(self.battery_size))       classs Ecar():    '''这是一个电动车的类'''    def __init__(self, make, model, year):        '''初始化父类属性,再初始化电动车特有的属性'''        super().__init__(make, model, year)        self.battery = Battery()
四、导入类
#方法1import 模块名'''这种方法在后面使用模块中方法和属性的时候要在前面加上类名比如下面这种格式:'''Dog.my_dog.sit()#方法2from 模块名 import 类名'''这种方法导入模块中指定的类在后面编写代码的时候,不需要写类名'''#方法3from 模块名 import 类名'''导入模块中的所有类在后面编写代码时,不需要写类名'''
总结

以上是内存溢出为你收集整理的《Python从入门实践》学习笔记---第九章、类(面向对象)全部内容,希望文章能够帮你解决《Python从入门到实践》学习笔记---第九章、类(面向对象)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1188245.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存