zoukankan      html  css  js  c++  java
  • python基础(八)

    '''

    基于类创建对象时,每个对象都自动具备这种通用行为,然后可根据需要赋予每个对象独特的个性。
    根据类来创建对象被称为实例化。

    '''

    #根据dog类创建的每个实例都将存储名字和年龄,赋予每条小狗蹲下和打滚的能力 sit() roll_over()
    class Dog():
        
        def __init__(self, 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!")

    '''
    实参self,python调用_init_方法来创建实例时,将自动传入实参self。

    每个与类相关联的方法调用都自动传递实参self,它是指向实例本身的引用,让实例能够访问类中的属性和方法


    每当我们根据Dog类创建实例时,都只需给最后两个形参提供值。
    self.name = name获取存储在形参name中的值,并将其存储到变量name中,然后该变量被关联到当前创建的实例。

    这样可以通过实例访问的变量称为属性
    '''

    #根据类创建实例
    class Dog():
        
        
        def __init__(self, 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('peter', 10)
    print("My dog's name is " + my_dog.name.title() + ".")
    print("My dog is " + str(my_dog.age) + " years old.")
    My dog's name is Peter.
    My dog is 10 years old.
    
    '''
    1.访问属性
    2.调用方法
    3.创建多个实例
    '''
    my_dog.name
    'peter'
    my_dog.age
    10
    class Dog():
        
        
        def __init__(self, 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('peter', 10)
    my_dog.sit()
    my_dog.roll_over()
    Peter is now sitting.
    Peter rolled over!
    class Dog():
        
        
        def __init__(self, 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('peter', 10)
    your_dog = Dog('lucy', 6)
    
    print("My dog's name is " + my_dog.name.title() + ".")
    print("My dog is " + str(my_dog.age) + " years old.")
    my_dog.sit()
    my_dog.roll_over()
    
    print("
    Your dog's name is " + your_dog.name.title() + ".")
    print("Your dog is " + str(your_dog.age) + " years old.")
    your_dog.sit()
    your_dog.roll_over()
    My dog's name is Peter.
    My dog is 10 years old.
    Peter is now sitting.
    Peter rolled over!
    
    Your dog's name is Lucy.
    Your dog is 6 years old.
    Lucy is now sitting.
    Lucy rolled over!
    #使用类和实例
    修改实例的属性
    
    #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', 'a4', 2016)
    print(my_new_car.get_descriptive_name())
    2016 Audi A4
    #给属性指定默认值
    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.")
            
    my_new_car = Car('audi', 'a4', 2016)
    print(my_new_car.get_descriptive_name())
    my_new_car.read_odometer()
    2016 Audi A4
    This car has 0 miles on it.
    
    #修改属性的值
    #直接修改
    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.")
            
    my_new_car = Car('audi', 'a4', 2016)
    print(my_new_car.get_descriptive_name())
    my_new_car.odometer_reading = 23
    my_new_car.read_odometer()
    2016 Audi A4
    This car has 23 miles on it.
    #通过方法修改属性的值
    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):
            self.odometer_reading = mileage
            
    my_new_car = Car('audi', 'a4', 2016)
    print(my_new_car.get_descriptive_name())
    my_new_car.update_odometer(23)
    my_new_car.read_odometer()
    2016 Audi A4
    This car has 23 miles on it.
    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 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!") 
                
        def increment_odometer(self, miles):
            self.odometer_reading += miles
            
    my_used_car = Car('subaru', 'outback', 2013)
    print(my_used_car.get_descriptive_name())
    
    my_used_car.update_odometer(23500)
    my_used_car.read_odometer()
    
    my_used_car.increment_odometer(100)
    my_used_car.read_odometer()
    2013 Subaru Outback
    This car has 23500 miles on it.
    This car has 23600 miles on it.
    
    '''
    继承
    使用情形:要编写的类是另一个现成类的特殊版本。
    一个类继承另一个类时,将自动获得另一个类的所有属性和方法
    原有的类称为父类,新类称为子类;子类继承了父类的多有属性和方法,
    同时还可以定义自己的属性和方法。
    '''
    #子类的方法__init()__
    #父类汽车
    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!") 
                
        def increment_odometer(self, miles):
            self.odometer_reading += miles
            
    #子类电动汽车
    class ElectricCar(Car):
        def __init__(self, make, model, year):
            #super()建立父类与子类之间的联系,调用父类的方法__init__(),让ElectricCar包含父类的所有属性,父类也称为超类。
            super().__init__(make, model, year)
            
    my_tesla = ElectricCar('tesla', 'model s', 2016)
    print(my_tesla.get_descriptive_name())
    2016 Tesla Model S
    #给子类定义属性和方法
    #子类电动汽车
    class ElectricCar(Car):
        def __init__(self, make, model, year):
            #super()建立父类与子类之间的联系,调用父类的方法__init__(),让ElectricCar包含父类的所有属性,父类也称为超类。
            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', 'model s', 2016)
    print(my_tesla.get_descriptive_name())
    my_tesla.describe_battery()
    2016 Tesla Model S
    This car has a 70-KWh battery
    #重写父类的方法
    '''
    父类中的方法,不符合子类模拟的实物的行为,都可以对其进行重写。
    可在子类中定义一个与要重写的父类的方法同名的方法。
    '''
    #将实例用作属性
    '''
    可以将大型类拆分成多个协同工作的小类
    '''
    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")
    
    class ElectricCar(Car):
        def __init__(self, make, model, year):
            super().__init__(make, model, year)
            #创建一个新的Battery实例,并将该实例存储在属性self.battery中
            self.battery = Battery()
            
    my_tesla = ElectricCar('tesla', 'model s', 2016)
    print(my_tesla.get_descriptive_name())
    my_tesla.battery.describe_battery()#注意这里!在my_tesla中查找属性battery,并对存储在该属性中的Battery实例调用方法describe_battery()
    2016 Tesla Model S
    This car has a 70-KWh battery
    class Battery():
        def __init__(self, battery_size = 85):
            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) + " miles on a full charge."
            print(message)
            
    class ElectricCar(Car):
        def __init__(self, make, model, year):
            super().__init__(make, model, year)
            #创建一个新的Battery实例,并将该实例存储在属性self.battery中
            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()
    2016 Tesla Model S
    This car has a 85-KWh battery
    This car can go approximately 270 miles on a full charge.
    #导入类 将类存储在模块中,在主程序中导入所需的模块
    #导入单个类 car.py
    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!") 
                
        def increment_odometer(self, miles):
            self.odometer_reading += miles
    #my_car.py
    from car import Car#打开模块car,导入其中的Car类
    
    my_new_car = Car('audi', 'a4', 2016)
    print(my_new_car.get_descriptive_name())
    
    my_new_car.odometer_reading = 23
    my_new_car.read_odometer()

    2016 Audi A4
    This car has 23 miles on it.

    #在一个模块中存储多个类 car.py
    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!") 
                
        def increment_odometer(self, miles):
            self.odometer_reading += miles
            
            
    class Battery():
        def __init__(self, battery_size = 85):
            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) + " 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_electric_car.py
    from car import ElectricCar
    
    my_tesla = ElectricCar('tesla', 'model s', 2016)
    
    my_tesla.battery.describe_battery()
    my_tesla.battery.get_range()

    This car has a 85-KWh battery
    This car can go approximately 270 miles on a full charge.

    #从一个模块中导入多个类
    #my_cars.py
    from car import Car, ElectricCar
    
    my_beetle = Car('volkswagen', 'beetle', 2016)
    print(my_beetle.get_descriptive_name())
    
    my_tesla = ElectricCar('tesla', 'model s', 2016)
    print(my_tesla.get_descriptive_name())

    2016 Volkswagen Beetle
    2016 Tesla Model S

    #导入整个模块 使用句点表示法访问需要的类
    #my_cars.py
    import car
    
    my_beetle = car.Car('volkswagen', 'beetle', 2016)
    print(my_beetle.get_descriptive_name())
    
    my_tesla = car.ElectricCar('tesla', 'model s', 2016)
    print(my_tesla.get_descriptive_name())

    2016 Volkswagen Beetle
    2016 Tesla Model S

    #导入模块中的所有类
    from module_name import*
    #在一个模块中导入另一个模块
    #electric_car.py
    from car import Car#将Car类导入该模块中
    class Battery():
        def __init__(self, battery_size = 85):
            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) + " 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_car.py
    from car import Car
    from electric_car import ElectricCar
    
    my_beetle = Car('volkswagen', 'beetle', 2016)
    print(my_beetle.get_descriptive_name())
    
    my_tesla = ElectricCar('tesla', 'model s', 2016)
    print(my_tesla.get_descriptive_name())

    2016 Volkswagen Beetle
    2016 Tesla Model S

    #python标准库
    '''
    python标准库是一组模块,安装的python都包含。
    OrderedDict
    记录了键值对的添加顺序
    '''
    from collections import OrderedDict
    favorite_languages = OrderedDict()
    
    favorite_languages['jen'] = 'python' 
    favorite_languages['sarah'] = 'c' 
    favorite_languages['edward'] = 'ruby' 
    favorite_languages['phil'] = 'python'
    
    for name, language in favorite_languages.items():
        print(name.title() + "'s favorite language is " + language.title() + '.')
    Jen's favorite language is Python.
    Sarah's favorite language is C.
    Edward's favorite language is Ruby.
    Phil's favorite language is Python.
    





  • 相关阅读:
    存图---链式前向星
    Codeforces Round #664 (Div. 2)(A B C D)
    Go Running HDU
    Total Eclipse HDU
    Little W and Contest HDU
    2018 ICPC Asia Nanjing Regional Contest
    Codeforces Round #662 (Div. 2)(A B C D)
    Codeforces Round #661 (Div. 3)(A B C D E)
    素数判断(欧拉筛)
    网络流专题 模板 + 例题 (Going Home POJ
  • 原文地址:https://www.cnblogs.com/Cookie-Jing/p/13647762.html
Copyright © 2011-2022 走看看