0
点赞
收藏
分享

微信扫一扫

python类、继承和多态

沐之轻语 2022-01-04 阅读 64
python

要想学习类,首先需要了解类的一些术语:

  • 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
  • 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
  • 数据成员:类变量或者实例变量, 用于处理类及其实例对象的相关的数据。
  • 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
  • 局部变量:定义在方法中的变量,只作用于当前实例的类。
  • 实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
  • 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
  • 实例化:创建一个类的实例,类的具体对象。
  • 方法:类中定义的函数。
  • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法
class Cat:
    def eat(self):
        print("%s 爱吃鱼" % self.name)   #在方法内部,访问对象的属性用self.

tom = Cat()
tom.name="Tom"   #由 哪一个对象 调用的方法,方法内的self就是 哪一个对象 的引用
tom.eat() #tom调用了eat方法,则eat方法内的self就是tom的对象
print(tom)
这种是在类的外部增加属性,不推荐,因为如果找不到就会报错,例下:
class Cat:
    def eat(self):
        print("%s 爱吃鱼" % self.name)   #在方法内部,访问对象的属性用self.

tom = Cat()
tom.eat() #tom调用了eat方法,则eat方法内的self就是tom的对象
tom.name="Tom"   #由 哪一个对象 调用的方法,方法内的self就是 哪一个对象 的引用
print(tom)

 使用self在方法内部输出多个名字时:

class Cat():
    def __init__(self,new_name):
        print("这是一个初始化方法")
        # self.属性名 = 属性的初始值
        # self.name = "Tom"
        self.name = new_name
    def eat(self):
        print("%s 爱吃鱼" % self.name)

tom = Cat("Tom")
print(tom.name)
tom.eat()

lazy_cat = Cat("大懒猫")
print(lazy_cat.name)
lazy_cat.eat()

类的初始化方法:

 

 继承

class Car():   #定义父类,类名为Car
    def __init__(self,name,weight,amount,method):  # __init__是对象的内置方法
        self.name = name      # self.属性名 = 属性的初始值
        self.weight = weight  # 如果希望在创建对象的同时就设置对象的属性,可以对__init__方法进行改造
        self.amount = amount
        self.method = method
        print("该客车名字为:%s" % self.name)
        print("该客车的重量为:%s " % self.weight)
    def amount_(self):     # 客车的载人量
        print("该客车的载人量为:%s " % self.amount)
    def method_(self):     # 客车的驾驶方法
        print("该客车的驾驶方法为:%s " % self.method)

class Bus(Car):   # 子类中的参数是父类
    pass

if __name__ == "__main__":
    bus = Bus("东风路28路公交车",100,20,"慢速驾驶")       # 调用Bus类,并传入实参
    bus.amount_()
    bus.method_()
举报

相关推荐

0 条评论