Python(5)-类

1.类
在面对对象编程中,编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。编写类时,定义一大类对象都有的通用行为。基于类创建对象时,每个对象都自动具备这种通用行为,然后可根据需要赋予每个对象独特的个性。
根据累来创建对象被称为实例化,这样能够使用类的实例。
 
1.1创建类
class ClassName():
 
1.2方法__init__()
类中的函数称为方法,唯一重要的差别是调用方法的方式。
class Dog():
def __init__(self, name):
    “””初始化属性name“”“
    self.name = name
def roll_over(self):
    """模拟小狗被命令时打滚”""
    print(self.name.title() + " rolled over!")
如上例,__init__()是一个特殊的方法,每当你根据这个类创建新的实例时,都会自动运行它。这个方法的定义中,形参self必不可少,还必须在位于其他形参的前面。每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。
 
1.3根据类创建实例
举例如1.2的类,创建实例:
my_dog = Dog(‘aDai’)
print(“My dog’s name is “ + my_dog.name.title() + “.”)
使用实参‘aDai’调用Dog类中的方法__init__()。方法__init__()创建一个表示特定小狗的示例,并使用我们提供的值来设置属性name。
(1)访问属性
要访问实例的属性,可使用句点表示法。
my_dog.name
(2)调用方法
my_dog = Dog(‘aDai’)
my_dog.roll_over()
结果:aDai rolled over!
(3)创建多个实例
my_dog = Dog(‘aDai’)
you_dog = Dog(‘aHua’)
 
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):
        --snip--
    def read_odometer(self):
        """打印一条指出汽车里程的消息"""
        print("This car has " + str(self.odometer_reading) + " miles on it.”)
2.1修改属性的值
(1)直接修改属性的值
my_new_car = Car(‘haha’, ‘a4’, 2016)
my_new_car.odometer_reading = 23 修改类里定义的值
my_new_car.read_odometer() 
 
(2)通过方法修改属性的值
在Car类里面增加方法如下:
def update_odometer(self, mileage):
    """将里程表读数设置为指定的值”""
    self.odometer_reading = mileage
然后就可以通过调用该方法修改这个值:
my_new_car.update_odometer(23)
my_new_car.read_odometer()
 
(3)通过方法对属性的值进行递增
在Car类里面增加方法如下:
def increment_odometer(self, miles):
    """将里程表读数增加指定的量”""
    self.odometer_reading += miles
 
3.继承
要想编写的类是另一个现成类的特殊版本,可使用继承。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。
创建子类时,父类必须包含在当前文件中,且位于子类前面,例如:
class Car():  父类
    —snip—
class ElectricCar(Car):
    """电动汽车的独特之处”""
    def __init__(self, make, model, year):
    """初始化父类的属性”""
    super().__init__(make, model, year)
    —snip—
super()是一个特殊函数,帮助Python将父类和子类关联起来。让Python调用ElectricCar的父类的方法__init__(),让ElectricCar实例包含父类的所有属性。
 
4.将实例用作属性
举例如下:
class Car():
    --snip— 
class Battery():      
    """一次模拟电动汽车电瓶的简单尝试”""
    def __init__(self, battery_size=70):
    """初始化电瓶的属性”""
    self.battery_size = battery_size
 
    def describe_battery(self):
        """打印一条描述电瓶容量的消息”""
        print("This car has a " + str(self.battery_size) + "-kWh battery.”)
class ElectricCar(Car):
    """电动汽车的独特之处”""
    def __init__(self, make, model, year):
    """初始化父类的属性,再初始化电动汽车特有的属性”""
    super().__init__(make, model, year)
    self.battery = Battery()
 
my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()  在实例my_tesla中查找属性battery,并对存储在该属性中的Battery实例调用方法describe_battery()。
这样可以很详细的描述battery,且不会让ElectricCar类混乱不堪。
 
5.导入类
5.1导入单个类
from module_name import class_name1
 
5.2从一个模块中导入多个类
from module_name import class_name1,class_name2
 
5.3导入整个模块
import module_name
 
5.4导入模块中的所有类
from module_name import *
 
 
 
posted @ 2018-05-31 16:29  Tester-blanche  阅读(382)  评论(0编辑  收藏  举报