zoukankan      html  css  js  c++  java
  • python基础(6)-----类和实例

    创建简单的类和实例

    在python中,首字母大写的名称指的是类,这个类定义中括号的内容是空的。

    面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。

    class Dog():  #首字母大写的名称代表的是类,类定义中的括号是空的
        """一次模拟小狗的简单尝试"""
        def __init__(self, name, age): #_init_()是一个特殊的方法,每次创建新实例python都会运行它
            """初始化属性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("zs", 4)  #定义两只小狗
    your_dog = Dog("ls", 5)
    
    print("my dog's name " + my_dog.name.title() + "!")
    print("your dog's name " + your_dog.name.title() + "!")
    my_dog.sit()
    your_dog.roll_over()

    运行结果为:

    my dog's name Zs!
    your dog's name Ls!
    Zs is now sitting.
    Ls rolled over!

    使用类和实例

    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.model + ' ' + self.make
            return long_name.title() #此处必须有返回值
        def read_odometer(self):
            """打印一条汽车里程的消息"""
            print("this car has " + str(self.odometer_reading) + " miles on it.")
    new_car = Car('audi', 'a4', 3)
    print(new_car.get_descriptive_name())
    new_car.read_odometer()

    运行结果为:

    3 A4 Audi
    this car has 0 miles on it.

    修改属性的值

    可以用三种方法修改属性的值;

    (1)直接通过实例进行修改;

    (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 = str(self.year) + ' ' + self.model + ' ' + self.make
            return long_name.title() #此处必须有返回值
        def read_odometer(self):
            """打印一条汽车里程的消息"""
            print("this car has " + str(self.odometer_reading) + " miles on it.")
    new_car = Car('audi', 'a4', 3)
    new_car.read_odometer()
    new_car.odometer_reading = 3 #直接修改属性的值
    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 = str(self.year) + ' ' + self.model + ' ' + self.make
            return long_name.title() #此处必须有返回值
        def update_odometer_reading(self, meter):   #此处添加一个方法,这个方法可以接受里程值,并进行存储。
            self.odometer_reading = meter
        def read_odometer(self):
            """打印一条汽车里程的消息"""
            print("this car has " + str(self.odometer_reading) + " miles on it.")
    
    new_car = Car('audi', 'a4', 3)
    new_car.update_odometer_reading(5) #调用方法,并传递实参5
    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 = str(self.year) + ' ' + self.model + ' ' + self.make
            return long_name.title() #此处必须有返回值
        def incream_odometer_reading(self, meter):   #此处添加一个方法,这个方法可以接受里程值,并将其加入到原有值。
            self.odometer_reading += meter
        def read_odometer(self):
            """打印一条汽车里程的消息"""
            print("this car has " + str(self.odometer_reading) + " miles on it.")
    
    new_car = Car('audi', 'a4', 3)
    new_car.incream_odometer_reading(5) #调用方法,并传递实参5
    new_car.read_odometer()
    new_car.incream_odometer_reading(5) #调用方法,再次传递实参5
    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 = str(self.year) + ' ' + self.model + ' ' + self.make
            return long_name.title() #此处必须有返回值
        def read_odometer(self):
            """打印一条汽车里程的消息"""
            print("this car has " + str(self.odometer_reading) + " miles on it.")
    class ELE(Car):   #定义子类时必须在括号内指定父类的名称
        """d电动车的独特之处"""
        def __init__(self, make, model,year):
            """初始化父类的属性"""
            super().__init__(make, model, year) #super()是一个特殊函数,将父类和子类关联起来
    my_ele = ELE('aa', 'ss',4)
    my_ele.read_odometer()
    print(my_ele.get_descriptive_name())
  • 相关阅读:
    【C++】小心使用文件读写模式:回车(' ') 换行(' ')问题的一次纠结经历
    小记同学一次奇葩的DNS欺骗实验失败经历
    IE的BHO通过IHTMLDocument2接口获得网页源代码
    HTML5离线缓存攻击测试(二)
    HTML5离线缓存攻击测试
    PHP防止SQL注入的方法
    Linux系统环境变量的四个配置文件的关系
    CentOS 7 上搭建LNMP环境
    [Linux][Nginx][02]Config
    [Linux][Nginx][01]Install
  • 原文地址:https://www.cnblogs.com/jinyuanliu/p/10362583.html
Copyright © 2011-2022 走看看