目录
一、创建和使用类
使用类几乎可以模拟任何东西。以Dog类举例。
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!")
创建类使用关键字class,根据约定,在Python中,首字母大写的名称指的是类。这个类定义中的括号是空的,因为我们要从空白创建这个类。
1、方法__init__()
类中的函数称为方法。__init__()是一个特殊的方法,每当创建新实例时,Python都会自动运行它。在这个方法的名称中,开头和末尾各有两个下划线。这是一种约定,旨在避免Python默认方法与普通方法发生名称冲突。在上面的例子中,包含了三个形参:self、name、age。在这个方法中,形参self必不可少,还必须位于其他形参的前面。为何必须在方法定义中包含形参self呢?因为Python调用__init__()方法创建Dog实例时,将自动传入形参self。每个与类想关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。
二、根据类创建实例
my_dog=Dog('Tom',23)
1、访问属性
dog_age=my_dog.age
print(dog_age)
访问age属性并打印。
2、调用方法
要调用方法,可指定实例的名称和要调用的方法,并用句点号分割它们。如调用sit()方法。
my_dog.sit()
'''Tom is now sitting.'''
3、创建多个实例
my_dog=Dog('Tom',23)
my_dog1=Dog('Boe',22)
三、使用类和实例
1、给属性指定默认值
类中的每个属性都必须有初始值,哪怕是0或者空字符串。
原来的类:
class Car():
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
def get_desctriptive_name(self):
long_name=str(self.year)+' '+self.make+' '+self.model
return long_name
my_new_car=Car('audi','a4',2016)
print(my_new_car.get_desctriptive_name())
'''
2016 audi a4
'''
给属性指定默认值后:
class Car():
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
self.odometer_reading=0
def get_desctriptive_name(self):
long_name=str(self.year)+' '+self.make+' '+self.model
return long_name
def read_odometer(self):
print('This cacr has '+str(self.odometer_reading)+ ' miles on it.')
my_new_car=Car('audi','a4',2016)
print(my_new_car.get_desctriptive_name())
my_new_car.read_odometer()
'''
2016 audi a4
This cacr has 0 miles on it.
'''
2、修改属性的值
(1)直接修改属性的值
class Car():
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
self.odometer_reading=0
def get_desctriptive_name(self):
long_name=str(self.year)+' '+self.make+' '+self.model
return long_name
def read_odometer(self):
print('This cacr has '+str(self.odometer_reading)+ ' miles on it.')
my_new_car=Car('audi','a4',2016)
print(my_new_car.get_desctriptive_name())
my_new_car.odometer_reading=120
my_new_car.read_odometer()
'''
2016 audi a4
This cacr has 120 miles on it.
'''
(2)通过方法修改属性的值
class Car():
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
self.odometer_reading=0
def update_odometer(self,mileage):
self.odometer_reading=mileage
def get_desctriptive_name(self):
long_name=str(self.year)+' '+self.make+' '+self.model
return long_name
def read_odometer(self):
print('This cacr has '+str(self.odometer_reading)+ ' miles on it.')
my_new_car=Car('audi','a4',2016)
print(my_new_car.get_desctriptive_name())
my_new_car.update_odometer(120)
my_new_car.read_odometer()
'''
2016 audi a4
This cacr has 120 miles on it.
'''
(3)通过方法对属性的值进行递增
class Car():
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
self.odometer_reading=0
def update_odometer(self,mileage):
self.odometer_reading+=mileage
def get_desctriptive_name(self):
long_name=str(self.year)+' '+self.make+' '+self.model
return long_name
def read_odometer(self):
print('This cacr has '+str(self.odometer_reading)+ ' miles on it.')
my_new_car=Car('audi','a4',2016)
print(my_new_car.get_desctriptive_name())
my_new_car.update_odometer(120)
my_new_car.read_odometer()
my_new_car.update_odometer(130)
my_new_car.read_odometer()
'''
2016 audi a4
This cacr has 120 miles on it.
This cacr has 250 miles on it.
'''
四、继承
class 子类名(父类名):
属性和方法
一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。子类继承了父类所有属性和方法,同时还可以定义自己的属性和方法。
1、子类的方法__init__()
创建子类的实例时,Python首先需要完成的任务是给父类的所有属性赋值。
2、给子类定义属性和方法
让一个类继承另一个类后,可添加区分子类和父类所需的新属性和方法。
3、重写父类的方法
对于父类的方法,只要它不符合子类模拟的实物的行为都可以对其进行重写。为此,我在子类中定义一个这样的方法,即它与要重写的父类方法同名。这样,Python将不会考虑这个父类方法这个父类方法,只会关注你在子类中定义的相应方法。
4、将实例用作属性
5、模拟实物
五、导入类
1、导入单个类
from 模块名 import 类名
2、在一个模块中存储多个类
3、从一个模块中导入多个类
from 模块名 import 类名1,类名2,...
4、导入整个模块
import 类名
5、导入模块中的所有类
from 模块名 import *
6、在一个模块中导入另一个模块
文章如有错误,请指正。