"""============================================================================================="""
"""===================================== 创建/使用类==============================================="""
"""============================================================================================="""
if 0:
class Dog():#定义Dog类
#定义__init__方法
#根据Dog类创建新实例时都会自动运行该方法
#名称中开头和末尾各有两个下划线 避免Python默认方法与普通方法发生名称冲突
def __init__(self,name,age):
"""self是必不可少的但不一定要叫self"""
"""初始化属性name和age"""
self.name = name
self.age = age
#形参self 必不可少,还必须位于其他形参的前面。
#每个与类相关联的方法调用都自动传递实参self
#因此我们不需要传递它。根据Dog类创建实例时,只需给最后两个形参(name 和age )提供值。
def sit(self):
"""模拟小狗被命令时蹲下"""
#.title(),首个字母大写,可有可无
print(self.name.title() + " is now sitting.")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title() + " rolled over.")
#类实例化
my_dog = Dog('willie', 6)
#访问类的属性
print(my_dog.name.title() + " rolled over.")
print("My dog is " + str(my_dog.age) + " years old.")
#调用类的方法
my_dog.roll_over()
my_dog.sit()
print()
#再创建一个类实例
your_dog = Dog('Lucy',2)
#访问类的属性
print(your_dog.name.title() + " rolled over.")
print("My dog is " + str(your_dog.age) + " years old.")
#调用类的方法
your_dog.roll_over()
your_dog.sit()
"""============================================================================================="""
"""============================================================================================="""
"""=======================================使用类和实例=========================================="""
"""============================================================================================="""
"""============================================================================================="""
if 0:
class Car():
def __init__(self,make,model,year):
self.make = make
self.model = model
self.year = year
def get_descriptive_name(self):
return (str(self.year) + ' ' + self.make + ' ' + self.model)
my_car = Car('audi', 'a4', 2016)
print(my_car.get_descriptive_name())
#属性指定默认值
if 0:
class Car():
#实例化需传入参数:make,model,year,
"""利用make,model,year给类变量赋值,初始化后无意义"""
"""只有self.make,self.model,self.year,self.odometer_reading才是真实的类参数"""
#实例化不需传入参数:odometer_reading
def __init__(self,make = 'BYD',model = '海豹',year = 2000):#函数默认值
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0#默认值
def get_descriptive_name(self):
return (str(self.year) + ' ' + self.make + ' ' + self.model)
def read_odometer(self):
"""打印一条指出汽车里程的消息"""
return ("This car has " + str(self.odometer_reading) + " miles on it.")
#传入任意参数增加里程数
"""通过方法修改属性的值复现该用法"""
def change_odometer(self,data):
self.odometer_reading += data
return ("This car has " + str(self.odometer_reading) + " miles on it.")
my_car = Car('audi', 'a4',2016)
print(my_car.get_descriptive_name())
print(my_car.read_odometer())
print(my_car.change_odometer(33))
print()
your_car = Car()
print(your_car.get_descriptive_name())
print(your_car.read_odometer())
print(your_car.change_odometer(33))
"""============================================================================================="""
"""============================================================================================="""
"""=====================================修改属性的值=========================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""=====================================直接修改属性的值============================================"""
"""============================================================================================="""
if 0:
class Car():
#实例化需传入参数:make,model,year,
#实例化不需传入参数:odometer_reading
def __init__(self,make,model,year):
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0#默认值
def get_descriptive_name(self):
return (str(self.year) + ' ' + self.make + ' ' + self.model)
def read_odometer(self):
"""打印一条指出汽车里程的消息"""
print("This car has " + str(self.odometer_reading) + " miles on it.")
my_car = Car('audi', 'a4', 2016)
print(my_car.get_descriptive_name())
my_car.read_odometer()
print("修改后:")
my_car.odometer_reading = 36
my_car.model = 'A4L'
my_car.make = 'Audi'
print(my_car.get_descriptive_name())
my_car.read_odometer()
"""============================================================================================="""
"""======================================通过方法修改属性的值========================================="""
"""============================================================================================="""
if 0:
class Car():
#实例化需传入参数:make,model,year,
#实例化不需传入参数:odometer_reading
def __init__(self,make,model,year):
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0#默认值
def get_descriptive_name(self):
return (str(self.year) + ' ' + self.make + ' ' + self.model)
def read_odometer(self):
"""打印一条指出汽车里程的消息"""
print("This 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("ERR!!! You can't roll back an odometer!")
my_car = Car('audi', 'a4', 2016)
my_car.read_odometer()
my_car.update_odometer(10)
my_car.read_odometer()
my_car.update_odometer(5)
my_car.read_odometer()
my_car.update_odometer( my_car.odometer_reading + 5 )
my_car.read_odometer()
"""============================================================================================="""
"""========================================继承=================================================="""
"""============================================================================================="""
if 0:
#父类
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("This 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!")
#子类
class ElectricCar(Car):
"""电动汽车的独特之处"""
def __init__(self, make, model, year,BATT = 100):
"""初始化父类的属性"""
#super()是一个特殊函数,帮助Python将父类和子类关联起来。
#父类也称为超类超(superclass),名称super因此而得名。
super().__init__(make, model, year)
#子类所持有父类不具有的属性
self.BATT = BATT
#子类所持有父类不具有的函数
def describe_battery(self):
"""打印一条描述电瓶容量的消息"""
print("This car has a " + str(self.BATT) + "kWh battery.")
#重写父类方法
#子类要重写的父类方法:同名,这样相当于屏蔽父类方法,只考虑子类方法
def get_descriptive_name(self):
long_name = str(self.year) + ' ' + self.make + ' ' + self.model + ' (ElectricCar)BATT:' + str(self.BATT)
return long_name.title()
my_tesla = ElectricCar('tesla', 'model s', 2016 , 12)
print(my_tesla.get_descriptive_name())
my_tesla.update_odometer(199)
my_tesla.read_odometer()
my_tesla.describe_battery()
"""============================================================================================="""
"""============================== 将实例用作属性 (类嵌套) ======================================"""
"""============================================================================================="""
if 1:
#弥补类
class Battery():
def __init__(self , BATT = 70):
"""初始化电瓶的属性"""
self.BATT = BATT
def describe_battery(self):
"""打印一条描述电瓶容量的消息"""
print("This car has a " + str(self.BATT) + "kWh battery.")
#父类
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("This 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!")
#子类
class ElectricCar(Car):
"""电动汽车的独特之处"""
"""batt 给电池赋初值"""
def __init__(self, make, model, year, batt = 150):
"""初始化父类的属性"""
#super()是一个特殊函数,帮助Python将父类和子类关联起来。
#父类也称为超类超(superclass),名称super因此而得名。
super().__init__(make, model, year)
#将实例用作属性(类嵌套)
self.Batt = Battery(batt)
#重写父类方法
#子类要重写的父类方法:同名,这样相当于屏蔽父类方法,只考虑子类方法
def get_descriptive_name(self):
long_name = str(self.year) + ' ' + self.make + ' ' + self.model + ' (ElectricCar)BATT:' + str(self.Batt.BATT)
return long_name.title()
my_tesla = ElectricCar('tesla', 'model s', 2016 )
print(my_tesla.get_descriptive_name())
my_tesla.update_odometer(199)
my_tesla.read_odometer()
my_tesla.Batt.describe_battery()
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
"""============================================================================================="""
PythonUnit9类
最新推荐文章于 2024-08-22 22:01:15 发布