`
陈三许
  • 浏览: 7623 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

python笔记7 类

阅读更多
######类##
##创建和使用类
#创建Dog类(类中的函数成为方法)
class Dog():
"""一次模拟小狗的简单测试"""
def __init__(self,name,age):   ##init前后两个下划线_
"""初始化属性name和age"""
self.name=name
self.age=age
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name+'is now sitting.')
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name+' rolled over!')
#根据类创建实例
my_dog = Dog('willie',5)
#访问属性  句点法(my_dog.name)
print("My dog is "+my_dog.name.title()+"and %d years old."%my_dog.age)
#调用方法
my_dog.sit()
my_dog.roll_over()

#创建多个实例
my_dog=Dog('curyy',6)   
your_dog=Dog('willie',5)

print("My dog is "+my_dog.name.title()+"and %d years old."%my_dog.age)
my_dog.sit()

print("Your dog is "+your_dog.name.title()+"and %d years old."%your_dog.age)
my_dog.sit()

##使用类和实例
#Car类
class Car():
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year

def get_descriptive_name(self):
long_name=str(self.year)+' '+self.make+' '+self.model
return long_name.title()

my_new_car=Car('audi','a24',2019)
print(my_new_car.get_descriptive_name())
#给属性指定默认值
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.")

my_new_car=Car('audi','a24',2019)
print(my_new_car.get_descriptive_name())
my_new_car.read_odometer()
#修改属性的值
#
my_new_car.odometer_reading=99 ##直接访问属性修改
my_new_car.read_odometer()
#
#通过方法修改属性的值
class Car():
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
self.odometer_reading=55 #
"""汽车的属性"""

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")
my_new_car=Car('audi','a24',2019)

my_new_car.update_odometer(88) #向update_odometer提供实参,修改属性里程的值
my_new_car.read_odometer() #打印汽车里程
#通过方法对属性的值进行递增
class Car():
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
self.odometer_reading=55 #
"""汽车的属性"""

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")

def increment_odometer(self,miles):
self.odometer_reading += miles

my_new_car=Car('audi','a24',2019)

my_new_car.update_odometer(88)
my_new_car.increment_odometer(10)
my_new_car.read_odometer()

##继承   一个类继承另一个类的所有属性和方法;原有的类称父类,新类称子类
#电动汽车
class Car(): #父类与子类在同一个文件夹中,且在子类前面

def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
self.odometer_reading=55 #
"""汽车的属性"""

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")

def increment_odometer(self,miles):
self.odometer_reading += miles

class ElectricCar(Car):
"""电动汽车的独特之处"""

def __init__(self,make,model,year):
"""初始化父类的属性"""
super().__init__(make,model,year)   #super函数 将父类与子类关联在一起#
##此行代码让python调用父类的方法__init__(),让子类实例包含父类的所有属性

my_tesla=ElectricCar('tesla','curry',2018)
print(my_tesla.get_descriptive_name())
my_tesla.update_odometer(88)
my_tesla.read_odometer()

#给子类定义属性和方法
class Car():

def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
self.odometer_reading=55 #
"""汽车的属性"""

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")

def increment_odometer(self,miles):
self.odometer_reading += miles

class ElectricCar(Car):

"""电动汽车的独特之处"""

def __init__(self,make,model,year):
"""初始化父类的属性"""
super().__init__(make,model,year)
self.battery_size=70  #初始化电动汽车特有的属性 #添加新属性

def describe_battery(self):
"""打印一条描述电量的消息"""
print("This car has a "+str(self.battery_size)+'-kwh battery.')

my_tesla=ElectricCar('tesla','curry',2018)
print(my_tesla.get_descriptive_name())
my_tesla.describe_battery()

#重写父类的方法
#假如父类的一个方法 不符合子类模拟实物的行为
#可重写父类方法
"""def fill_gas_tank():  ##此方法在父类中
print('nonononononono')""" ##重写

#将实例用作属性
class Car():

def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
self.odometer_reading=55 #
"""汽车的属性"""

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")

def increment_odometer(self,miles):
self.odometer_reading += miles

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','curry',2018)
print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()
my_tesla.battery.get_range()

##导入类
#导入单个类
from car import Car  #从car.py文件(模块)中导入Car类#

my_new_car=Car('audi','a6',2018)
print(my_new_car.get_descriptive_name())
my_new_car.odometer_reading=55
my_new_car.read_odometer()

#在一个模块中存储多个类
#可将上述类Battery和ElectricCar加入模块car.py中
#from car import ElectricCar 可导入类ElectricCar

#从一个模块中导入多个类
#from car import Car,ElectricCar

#导入整个模块
#import car

#Python标准库资源网站:http://pymotw.com/
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics