类和继承

类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。比如猫是一个类,那么我的猫就是一个实例对象。

class Student:  # 定义一个学生类(请使用大驼峰命名法)    grade = 2  # 这是类变量,类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
def __init__(self, name, age, gender): # 初始化学生的属性        self.name = name  #对象.名字 = name         self.age = age  # 年龄        self.gender = gender  #性别 print(age, name, gender)
def reading(self): # 定义学生的方法(阅读) print(self.name + " is reading\n")

stu1 = Student("yefengting", 20, "female") # 在类中创建一个实例对象stu1.reading()  # 调用类中的方法# 调用方法:stu1.reading()  #1.对象.方法()Student.reading(stu1) #2.类名.方法(对象)

  在上述例子中,我们定义了一个学生类,然后定义了一个类变量(年级),随后使用魔术方法__init__()初始化了学生的属性,__init__()的第一个形参一定是self,即对象本身。在我们创建实例时初始化会自动执行,随后会将实例化对象传入,再对每个对象都进行初始化。

 另外我们定义了一个阅读的方法,让学生可以阅读,在类中def的叫做方法,而在类之外def的叫函数,其实区别不大。

  stu1就是我们实例化出来的第一个学生对象。我们传入了三个实参,名字、年龄、性别,因此我们的学生stu1的属性就被初始化了。

  第15行,我们让学生调用了阅读的方法。

给属性指定默认值:

class Cars:  # 定义Car类
def __init__(self, make, model, year): # 初始化秒数汽车的属性 self.make = make self.model = model self.year = year self.odometer = 0 # 设置属性默认值为0# 修改属性的值"""三种方法:1.通过实例进行修改2.通过方法去设置3.通过方法进行递增"""# 1. 通过实例修改car1 = Car("audi", "a4", 2016)car1.odometer = 23
# 2.通过方法设置def update_odometer(self, mileage):        self.odometer_reading = mileage  # 更新默认值的值
# 3.通过方法来递增def update_odometer(self, miles): if miles >=0: self.odometer_reading += miles else: print("don't roll back the odometer!")

继承

  假如我们创建了一个Car类,那么如果我们的车不是传统的汽车,而是电动汽车,且有传统车所没有的属性(比如电量),那么此时我们可以用继承的方法继承父类的所有属性,再添加特有的属性/重写父类的属性,方法如下:

     以下是父类Car:

class Car:
def __init__(self, make, model, year): # 初始化秒数汽车的属性 self.make = make self.model = model self.year = year self.odometer_reading = 0 # 默认值为0
def read_odometer(self): # 打印一条关于汽车里程的消息 print("This car has " + str(self.odometer_reading) + " miles on it.")
def update_odometer(self, mileage): self.odometer_reading = mileage
    def gas_tank(self):  #  油量,这是电动车所不需要的属性 print("the tank is ...."+self.year)

  现在我们来继承:

继承的语法是 super().__init__(父类的所有属性都拿过来,可以再加上子类的属性,注意:不需要传self)

class ElectricCar(Car):  #ElectricCar为子类,Car为父类
def __init__(self, make, model, year): super().__init__(make, model, year) # 父类又被称为超类 self.buttery_size=70 # 添加电动车的特有属性 print(self.make+" "+self.model+" "+str(self.year))
def gas_tank(self): # 重写父类属性 print("the car doesn't need a gas tank")
def describe_buttery(self): #给子类定义属性和方法 print("this car has a "+str(self.buttery_size)+" kWh battery")

  挖坑:多重继承,其他魔术方法

声明:来自睡不着所以学编程,仅代表创作者观点。链接:https://eyangzhen.com/8068.html

睡不着所以学编程的头像睡不着所以学编程

相关推荐

添加微信
添加微信
Ai学习群
返回顶部