Python -day 9

创建类:使用关键字 class 。在Python中,首字母大写的名称指的是类。
方法_init_() :是一个特殊的方法,创建类的时候,Python会自动运行,在这个方法的名称中,开头和末尾有两个下划线,这是一种约束,旨在避免Python默认方法与普通方法发生名称冲突。方法中的形参self 必不可少,还必须位于其他形参的前面,是一个指向实例本身的引用,让实例能够访问类中的属性和方法。
self : 以self 为前缀的变量都可供类中的所有方法使用,可以通过类的任何实例来访问这些变量。
访问属性:要访问实例的属性,可使用句点表示法

 1 >>> class Dog():
 2 >>>     """一次模拟小狗的简单尝试"""
 3 >>> 
 4 >>>     def __init__(self, name, age):
 5 >>>         """初始化属性name和age"""
 6 >>>         self.name = name
 7 >>>         self.age = age
 8 >>> 
 9 >>>     def sit(self):
10 >>>         """模拟小狗被命令时蹲下"""
11 >>>         print(self.name.title() + " is now sitting.")
12 >>> 
13 >>>     def roll_over(self):
14 >>>         """模拟小狗被命令时打滚"""
15 >>>         print(self.name.title() + " rolled over! ")
16 >>> 
17 >>> my_dog = Dog('willie', 6)
18 >>> your_dog=Dog('lucy',3)
19 >>> print("My dog's name is " + my_dog.name.title() + " .")
20 >>> print("My dog is " + str(my_dog.age) + " years old.")
21 >>> my_dog.sit()
22 >>> my_dog.roll_over()
23 >>> 
24 >>> print("Your dog's name is " + your_dog.name.title() + " .")
25 >>> print("Your dog is " + str(your_dog.age) + " years old.")
26 >>> your_dog.sit()
27 >>> your_dog.roll_over()
28 
29 My dog's name is Willie .
30 My dog is 6 years old.
31 Willie is now sitting.
32 Willie rolled over! 
33 
34 Your dog's name is Lucy .
35 Your dog is 3 years old.
36 Lucy is now sitting.
37 Lucy rolled over! 

使用类和实例:给属性指定默认的值,修改属性的值(直接修改元素的值、通过方法修改元素的值、通过方法对属性的值递增)

 1 >>> class Car():
 2 >>>     """一次模拟汽车的简单尝试"""
 3 >>> 
 4 >>>     def __init__(self, make, model, year):
 5 >>>         """初始化描述汽车的属性"""
 6 >>>         self.make = make
 7 >>>         self.model = model
 8 >>>         self.year = year
 9 >>>         self.odometer_reading = 0
10 >>> 
11 >>>     def get_descriptive_name(self):
12 >>>         """返回整洁的描述信息"""
13 >>>         long_name = str(self.year) + ' ' + self.make + ' ' + self.model
14 >>>         return long_name.title()
15 >>> 
16 >>>     def read_odometer(self):
17 >>>         """打印一条指出汽车里程的消息"""
18 >>>         print("This car has " + str(self.odometer_reading) + " miles on it.")
19 >>> 
20 >>>     def update_odometer(self, mileage):
21 >>>         """
22 >>>         将里程表读数设置为指定的值
23 >>>         禁止将里程表读数往回调
24 >>>         """
25 >>>         if mileage >= self.odometer_reading:
26 >>>             self.odometer_reading = mileage
27 >>>         else:
28 >>>             print("You can't roll back an odometer !")
29 >>> 
30 >>>     def increment_odometer(self, miles):
31 >>>         """将里程表读数增加指定的量"""
32 >>>         self.odometer_reading += miles
33 >>> 
34 >>> my_new_car = Car('audi', 'a4', 2016)
35 >>> print(my_new_car.get_descriptive_name())
36 >>> my_new_car.read_odometer()
37 >>> print("直接修改元素的值:")
38 >>> my_new_car.odometer_reading = 23
39 >>> my_new_car.read_odometer()
40 >>> print("通过方法修改元素的值:")
41 >>> my_new_car.update_odometer(30)
42 >>> my_new_car.read_odometer()
43 >>> print("通过方法对属性的值递增:")
44 >>> my_new_car.increment_odometer(100)
45 >>> my_new_car.read_odometer()
46 
47 2016 Audi A4
48 This car has 0 miles on it.
49 直接修改元素的值:
50 This car has 23 miles on it.
51 通过方法修改元素的值:
52 This car has 30 miles on it.
53 通过方法对属性的值递增:
54 This car has 130 miles on it.

继承:子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。
特殊函数 super() :帮助Python将父类和子类关联起来,父类也称为超类(superclass)
定义子类时,必须在括号内指定父类的名称。
重写父类的方法的时候,必须要与父类方法同名。

 1 >>> class Battery():
 2 >>>     """一次模拟电动汽车电瓶的简单尝试"""
 3 >>> 
 4 >>>     def __init__(self, battery_size=70):
 5 >>>         """初始化电瓶的属性"""
 6 >>>         self.battery_size = battery_size
 7 >>> 
 8 >>>     def describe_battery(self):
 9 >>>         """打印一条描述垫片容量的消息"""
10 >>>         print("This car has a " + str(self.battery_size) + "-kWh battery.")
11 >>> 
12 >>> 
13 >>> class ElectricCar(Car):
14 >>>     """电动汽车的独特之处"""
15 >>> 
16 >>>     def __init__(self, make, model, year):
17 >>>         """初始化父类的属性"""
18 >>>         super().__init__(make, model, year)
19 >>>         self.battery = Battery()
20 >>> 
21 >>>     def fill_gas_tank(self):
22 >>>         """
23 >>>         电动汽车没有油箱
24 >>>         假设此函数父类也有同名函数,重写父类方法
25 >>>         """
26 >>>         print("This car doesn't need a gas tank!")
27 >>> 
28 >>> 
29 >>> my_tesla = ElectricCar('tesla', 'model s', 2016)
30 >>> print(my_tesla.get_descriptive_name())
31 >>> my_tesla.battery.describe_battery()
32 
33 2016 Tesla Model S
34 This car has a 70-kWh battery.

猜你喜欢

转载自www.cnblogs.com/Molzx/p/10513475.html
今日推荐