类
要想学习类,首先需要了解类的一些术语:
- 类(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_()