python编程从入门到实践第九章_《Python编程:从入门到实践》第九章笔记

9.1 创建和使用类

9.1.1 创建Dog类

class Dog():

def __init__(self,name,age): #3

"""初始化属性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__()

类中的函数称为方法,3处的方法__init__()是一个特殊的方法,每当你根据类创建新实例时,Python都会自动运行它。该方法中包含三个self、name和age,在方法的定义中,形参self必不可少,还必须位于其他形参的前面。当Python调用__init__()方法创建实例时,每个类中的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。

9.1.2 根据类创建实例

my_dog = Dog("willile",6)

1.访问属性

my_dog.name

2.调用方法

my_dog.sit()

9.2 使用类和实例

9.2.1 Car类

class Car():

def __init__(self,make,model,year):

self.make = make

self.model = model

self.year = year

def get_name(self):

long_name = str(self.year) + " " + self.make + " " + self.model

return long_name

car = Car("audi","a4",2016)

print(car.get_name())

2016 audi a4

9.2.2 给属性指定默认值

在__init__()内指定属性的初始值是可行的,如果你对某个属性这样做了,就无须包含为他提供初始值的形参。

class Car():

def __init__(self,make,model,year):

self.make = make

self.model = model

self.year = year

self.odometer_reading = 0

def get_name(self):

long_name = str(self.year) + " " + self.make + " " + self.model

return long_name

9.2.3 修改属性的值

1.直接修改属性的值

car.name = "jiayu"

2.通过方法修改属性的值

def update_odometer(self,mileage):

self.odometer = mileage

9.3 继承

一个类继承另一个类时,它将自动获得另一个类的所有属性和方法:原有的类称为父类,而新类称为子类。

9.3.1 子类的方法__init__()

class Car():

def __init__(self,make,model,year):

self.make = make

self.model = model

self.year = year

def get_name(self):

long_name = str(self.year) + " " + self.make + " " + self.model

return long_name

class ElectricCar(Car):

def __init__(self,make,model,year):

super().__init__(make,model,year)

tesla = ElectricCar('tesla','s',2016)

创建子类时,父类必须包含于当前文件中,且位于子类前面。定义子类时,必须在括号内知名父类的名称。super()是一个特殊函数,帮助Python将父类与子类关联起来,让Python调用父类的方法__init__(),让ElectricCar实例包含父类的所有属性。父类也称为超类(superclass),名称super因此而得名。

9.3.3 给子类定义属性和方法

class ElectricCar(Car):

def __init__(self,make,model,year):

super().__init__(make,model,year)

self.battery_size = 70

def describe_battery(self):

print(self.battery_size)

9.3.4 重写父类的方法

对于父类的方法,可根据子类的行为对其进行重写,在子类中定义一个这样的方法,要与重写的父类方法同名。这样Python将不会考虑父类方法,而只关注子类中定义的相应方法。

def fill_gas_tank():

print("no gas tank!")

9.3.5 将实例作为属性1

可将一个完整的类作为另一个类的属性

self.battery = Battery()

9.4 导入类

将Car类的定义写在car.py文件中

9.4.1 导入单个类

from car import Car

9.4.2 在一个模块中存储多个类

将互相有关联的类都加入模块car.py中,新建一个文件,导入ElectricCar类:

from car import ElectricCar

9.4.3 从一个模块导入多个类

from car import Car,ElectricCar

9.4.4 导入整个模块

import car

9.4.5 导入模块中的所有类

from module_name import *

9.4.6 在一个模块中导入另一个模块

有时候,需要将类分散到多个模块中,当一个模块中的类依赖于另一个模块中的类,这种情况下,可在前一个模块中导入必要的类

from car import Car

原文链接:https://blog.csdn.net/Karty9/article/details/106565928

你可能感兴趣的:(python编程从入门到实践第九章_《Python编程:从入门到实践》第九章笔记)