python基础:八,类

# 9.1 创建和使用类
## 9.1.1 创建Dog类

class Dog():
    """一次模拟小狗的简单尝试"""
    
#     self自动传递  属性函数,供全部方法使用
    def __init__(self,name,age):  #self 创建Dog实例,自动传入实参self,是一个指向实例本身的引用,创建的实例就可以访问类中的属性和方法
        """初始化属性name,age"""
        self.name = name  #以self为前缀的变量可以供类中的所有方法使用,可以通过类的任何实例来访问
        self.age = age  #可以通过实例访问的变量叫做   属性
        
    def sit(self):
        '''模拟小狗受到命令时蹲下'''
        print(f"{self.name} is now sitting.")
        
    def roll_over(self):
        '''模拟小狗受到命令时打滚'''
        print(f"{self.name} rolled over!")
        
#        创建实例 
my_dog  = Dog('wz',6)  #实例好对象,默认首先调用__init__方法,设置好属性,可以访问属性

print(f"My dog's name is {my_dog.name}")
print(f"My dog is {my_dog.age} years old.")


## 9.1.2 根据类创建实例

## 1,访问属性


my_dog.name
my_dog.age

##  2,调用方法

#使用方法·  实例化对象.方法
my_dog.sit()
my_dog.roll_over()

## 3,创建多个实例

my_dog  = Dog('wz',6)
your_dog = Dog('2d',78)
print(f"your dog's name is {your_dog.name}")
print(f"your dog is {your_dog.age} years old.")

# 9.2 使用类和实例







# 9.2.1 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 = f"{self.year} {self.make} {self.model}"
        return long_name
my_new_car  =   Car('audi','a4','2019')
print(my_new_car.get_descriptive_name())

# 9.2.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):
        '''返回整洁的描述性信息'''
        long_name = f"{self.year} {self.make} {self.model}"
        return long_name
    def read_odometer(self):
        '''打印一条指出汽车里程的消息'''
        print(f"This car has {self.odometer_reading} mile on it.")
        
my_new_car  =   Car('audi','a4','2019')
print(my_new_car.get_descriptive_name())

my_new_car.read_odometer()

# 9.2.3 修改属性的值

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 = f"{self.year} {self.make} {self.model}"
        return long_name
    def read_odometer(self):
        '''打印一条指出汽车里程的消息'''
        print(f"This car has {self.odometer_reading} mile on it.")
        
my_new_car  =   Car('audi','a4','2019')
print(my_new_car.get_descriptive_name())

my_new_car.odometer_reading = 23   #找出变量进行修改
my_new_car.read_odometer()

## 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):
        '''返回整洁的描述性信息'''
        long_name = f"{self.year} {self.make} {self.model}"
        return long_name
    def read_odometer(self):
        '''打印一条指出汽车里程的消息'''
        print(f"This car has {self.odometer_reading} mile on it.")
    def update_odometer(self,mileage):      #通过方法修改属性
        """将里程表读书设置为指定值"""
        self.odometer_reading = mileage
        
my_new_car  =   Car('audi','a4','2019')
print(my_new_car.get_descriptive_name())

my_new_car.odometer_reading = 23   #找出变量进行修改
my_new_car.read_odometer()

my_new_car.update_odometer(23)
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 = 0   
    def get_descriptive_name(self):
        '''返回整洁的描述性信息'''
        long_name = f"{self.year} {self.make} {self.model}"
        return long_name
    def read_odometer(self):
        '''打印一条指出汽车里程的消息'''
        print(f"This car has {self.odometer_reading} mile on it.")
    def update_odometer(self,mileage):     
        """将里程表读书设置为指定值"""
        if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("You can't roll back!")
        self.odometer_reading = mileage
        
my_new_car  =   Car('audi','a4','2019')
print(my_new_car.get_descriptive_name())

my_new_car.update_odometer(-1)
my_new_car.odometer_reading()



## 3,通过方法对属性值进行递增
假设我们购买了一辆二手车,且从购买到登记期间增加了100英里的里程

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 = f"{self.year} {self.make} {self.model}"
        return long_name
    def read_odometer(self):
        '''打印一条指出汽车里程的消息'''
        print(f"This car has {self.odometer_reading} mile on it.")
    def update_odometer(self,mileage):     
        """将里程表读书设置为指定值"""
        if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("You can't roll back!")
        self.odometer_reading = mileage
    def increment_odometer(self,miles):  #方法实现属性的增减
        self.odometer_reading += miles

my_new_car  =   Car('audi','a4','2019')
print(my_new_car.get_descriptive_name())

my_new_car.update_odometer(23500)
my_new_car.read_odometer()

my_new_car.increment_odometer(100)
my_new_car.read_odometer()

# 9.3 继承

1,继承父类
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):
        '''返回整洁的描述性信息'''
        long_name = f"{self.year} {self.make} {self.model}"
        return long_name
    def read_odometer(self):
        '''打印一条指出汽车里程的消息'''
        print(f"This car has {self.odometer_reading} mile on it.")
    def update_odometer(self,mileage):     
        """将里程表读书设置为指定值"""
        if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("You can't roll back!")
        self.odometer_reading = mileage
    def increment_odometer(self,miles):  #方法实现属性的增减
        self.odometer_reading += miles

        
        
class ElectricCar(Car):  #继承Car类
    """电动汽车"""
    def __init__(self,make,model,year):
        '''初始化父类的属性'''
        super().__init__(make,model,year)  #在。。。方法前面使用super().  super,特殊函数,调用父类方法,  超类
        
        
        
#
my_tesla = ElectricCar('wd','c3',35)
print(my_tesla.get_descriptive_name())

## 9.3.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):
        '''返回整洁的描述性信息'''
        long_name = f"{self.year} {self.make} {self.model}"
        return long_name
    def read_odometer(self):
        '''打印一条指出汽车里程的消息'''
        print(f"This car has {self.odometer_reading} mile on it.")
    def update_odometer(self,mileage):     
        """将里程表读书设置为指定值"""
        if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("You can't roll back!")
        self.odometer_reading = mileage
    def increment_odometer(self,miles):  #方法实现属性的增减
        self.odometer_reading += miles

        
        
class ElectricCar(Car):  #继承Car类
    """电动汽车"""
    def __init__(self,make,model,year):
        '''初始化父类的属性'''
        super().__init__(make,model,year)  #在。。。方法前面使用super().  super,特殊函数,调用父类方法,  超类
        
        #新增一个属性,设置初始值
        self.battery_size = 74
        
        #新增方法
    def describe_battery(self):
        '''打印一条描述电瓶容量的消息'''
        print(f"This car has a {self.battery_size}-kwh battery.")
        
        
#实例化类
my_tesla = ElectricCar('wd','c3',35)
print(my_tesla.get_descriptive_name())
my_tesla.describe_battery()

## 9.3.3 重写父类的方法

子类重写方法,子类的方法会忽略父类其的方法

## 9.3.4 将实例用作属性 

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 = f"{self.year} {self.make} {self.model}"
        return long_name
    def read_odometer(self):
        '''打印一条指出汽车里程的消息'''
        print(f"This car has {self.odometer_reading} mile on it.")
    def update_odometer(self,mileage):     
        """将里程表读书设置为指定值"""
        if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("You can't roll back!")
        self.odometer_reading = mileage
    def increment_odometer(self,miles):  #方法实现属性的增减
        self.odometer_reading += miles

        
        
class Battery:
    '''模拟电动汽车电瓶的简单尝试'''
    def __init__(self,battery_size = 75):
        self.battery_size = battery_size
    def describe_battery(self):
        '''打印一条描述电瓶容量的消息'''
        print(f"This car has a {self.battery_size}-kwh battery")
        
        
        
        
class ElectricCar(Car):  #继承Car类
    """电动汽车"""
    def __init__(self,make,model,year):
        '''初始化父类的属性'''
        super().__init__(make,model,year)  #在。。。方法前面使用super().  super,特殊函数,调用父类方法,  超类
        
        #定义新类,没有继承任何类
        self.battery = Battery()   #属性是实例化的一个类
        

        
        
#实例化类
my_tesla = ElectricCar('wd','c3',35)
print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()   #battery属性的des方法  两个.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值