python学习笔记(2)
python学习日记(2)
类操作
一.创建和使用类
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!")
my_dog = Dog('whillie', 6)
print("My dog's name is "+my_dog.name.title()+".")
print("My dog is " + str(my_dog.age) + " year.old.")
my_dog.roll_over()
my_dog.sit()
(1) python3.0的版本类的创建可以不在括号中添加object,三个引号为文档字符串,可以用来注释文档,至于类的调用,要根据实例化时括号中的实参来具体调用。类中的方法括号里的self是必须要添加的,方法中是通过用self来调用形参的。ps:若代码中的形参和实例中的参数名相重,那实例中的参数优先级更高。
二.使用类和实例
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):
"""返回整洁的描述性信息"""
long_name = str(self.year) + ' ' + self.make + self.model
return long_name.title()
def read_odometer(self):
"""打印一条指出汽车里程的信息"""
print("The car has " + str(self.odometer_reading) + " miles on it.")
def update_odometer(self,mileage):
"""
将里程表读书设置为指定的值
禁止将里程表读数往回调
"""
if mileage >= self.odometer_reading:#指定修改值一定要超过原值
self.odometer_reading = mileage
else:
print("You can't roll back an odometer!")
self.odometer_reading = mileage
my_new_car = Car('audi','a4', 2016)
print(my_new_car.get_descriptive_name())
my_new_car.read_odometer()
my_new_car.odometer_reading = 23
my_new_car.read_odometer()
my_new_car.update_odometer(23)
my_new_car.read_odometer()
(2)类似Java的构造函数;给属性赋值(通过方法赋值或者是直接赋值)
三.继承
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):
"""返回整洁的描述性信息"""
long_name = str(self.year) + ' ' + self.make + self.model
return long_name.title()
def read_odometer(self):
"""打印一条指出汽车里程的信息"""
print("The car has " + str(self.odometer_reading) + " miles on it.")
def update_odometer(self,mileage):
"""
将里程表读书设置为指定的值
禁止将里程表读数往回调
"""
if mileage >= self.odometer_reading:#指定修改值一定要超过原值
self.odometer_reading = mileage
else:
print("You can't roll back an odometer!")
self.odometer_reading = mileage
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.")
def get_range(self):
"""打印一条消息,指出电瓶的续航里程"""
if self.battery_size == 70:
range = 240
elif self.battery_size == 85:
range = 270
message = "This car can go approximately "+ str(range)
message += "miles on a full charge."
print(message)
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.get_range()
(3)继承
子类继承父类的所有方法和属性,和Java相似。
和python2.0+的不同是super()括号内的不需要写子类的名字。
关于方法的重写,方法名要相同。
四.导入类
from car import Car #打开car类导入其中car类
import Car #直接导入整个模块
from car import * #导入这个模块里所有类
(4)导入模板
ps:模板直接也可以互相导入,可以使一个模板不那么臃肿。
对于书本进行的小小总结,仅限于学习使用。

浙公网安备 33010602011771号