一天快速入门Python语法基础之类与继承

#一、创建Dog类
class Dog():
#每当你根据Dog类创建新实例,Python都会自动运行它,开头和末尾各有两个下划线,这时一种约定,避免和其他方法名混淆
#形参self必不可少,必须位于前面,Python调用_init_来创建实例是,将自动传入实参self,让实例能够访问类中的方法和属性
#self会自动传递,因此我们不需要传递它,但需给name和age两个形参传值
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def sit(self):
        print(self.name)

    def roll_over(self):
        print(self.name)

#二、根据类创建实例
#Python使用实参Tom和16调用Dog类中的方法_init_()创建一个表示特定小狗的示例,并使用用户传的值来设置属性name和age
#方法_init_并未显示地包含return语句,但Python会自动返回一个表示小狗的实例,我们将这个实例存储在my_dog中,
#my_dog指的是根据类创建的实例
my_dog=Dog('Tom',8)
print(my_dog.name)
print(str(my_dog.age))
#Python先找到实例my_dog,再查找与这个实例相关联的属性name
#根据Dog类创建实例后,就可以使用.来调用Dog类中定义的方法

 

#三、给属性指定默认值
#类中每个属性都必须有初始值,哪怕这个值是0或空字符串,如果在方法_init_中设置了某个属性的初始值,就不需包含为他提供初值的
class Car():

  def __init__(self,make,model,year):
    self.make=make
    self.model=model
    self.year=year
    self.odometer=0

  def get_name(self):
      long_name=str(self.year)+self.make+self.model
      return long_name.title()

  def read_odometer(self):
    print(str(self.odometer))
my_car = Car('ggg','t5',2055)
print(my_car.get_name())
my_car.read_odometer()

 

#四、修改属性的值
#1.直接修改属性的值
#要修改属性的值,最简单的方法是通过实例直接访问它
class Car():

  def __init__(self,make,model,year):
    self.make=make
    self.model=model
    self.year=year
    self.odometer=0

  def get_name(self):
      long_name=str(self.year)+self.make+self.model
      return long_name.title()

  def read_odometer(self):
    print(str(self.odometer))
my_car = Car('ggg','t5',2055)
print(my_car.get_name())
my_car.odometer=23 #通过句点来直接访问并设置属性odometer为23
my_car.read_odometer()

#2.通过方法修改属性的值
#如果有替你更新属性的方法,你就无需直接访问属性,而可将值传递给一个方法,由它在内部进行更新
class Car():

  def __init__(self,make,model,year):
    self.make=make
    self.model=model
    self.year=year
    self.odometer=0

  def get_name(self):
      long_name=str(self.year)+self.make+self.model
      return long_name.title()

  def read_odometer(self):
    print(str(self.odometer))

  def updata_odometer(self,mileage):
      self.odometer=mileage

my_car=Car('da','r4','3333')
print(my_car.get_name())
my_car.updata_odometer(33)
my_car.read_odometer()

 

#五、继承
#子类继承其父类的所有属性和方法,同时还可以定义自己的属性和方法
#1.子类方法的__init__()
class Car():
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer = 0

    def get_name(self):
        long_name = str(self.year)+self.make+self.model
        return long_name.title()

    def read_odometer(self):
        print(str(self.odometer))
    def update_odometer(self, mileage):
        if mileage>= self.odometer:
            self.odometer = mileage
        else:
            print("warning")

    def increment_odometer(self, miles):
        self.odometer += miles

class ElectricCar(Car):  #继承Car类
    def __init__(self, make, model, year):
        super().__init__(make, model, year)

my = ElectricCar('dada','aaf',777)
print(my.get_name())

#创建子类时父类必须包含在当前文件中,且位于子类前
#定义子类时必须在括号内指定父类名
#子类中第一个__init__方法接受Car实例所需的信息
#super()是一个特殊函数,帮助Python将父类和子类关联起来,让ElectricCar实例包含父类的所有属性,父类也称为超类(superclass)

 参考:《Python编程:从入门到实践》,本书作者Eric Matthes,译者袁国忠,由人民邮电出版社于2016年7月出版

posted @ 2018-03-18 02:40  锅锅7533  阅读(383)  评论(0编辑  收藏  举报