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.
    





  • 相关阅读:
    【Android Developers Training】 73. 布局变化的动画
    【Android Developers Training】 72. 缩放一个视图
    【Android Developers Training】 71. 显示翻牌动画
    svn更改地址怎么办
    python学习手册
    failed to bind pixmap to texture
    Ubuntu 12.04安装Google Chrome
    svn update 时总是提示 Password for '默认密钥' GNOME keyring: 输入密码
    重设SVN 的GNOME keyring [(null)] 的密码
    Nginx + uWSGI + web.py 搭建示例
  • 原文地址:https://www.cnblogs.com/Cookie-Jing/p/13647762.html
Copyright © 2011-2022 走看看