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