Python中的类,与C中结构体类似,但是类由变量和方法组成,比结构体更灵活更强大。类有三个特点:封装、继承、多态。
目录
一、定义一个类
使用class关键字可以定义一个类,注意类名需要大写字母开头,如下:
class Zoo:
cat = 1
dog = 2
fish = 3
def hello(self):
print("喵喵喵汪汪汪嗷嗷嗷")
二、实例对象
在类中,我们可以创建实例对象,一个类可以创建无数个不同的实例对象:
zoo1 = Zoo()
zoo2 = Zoo()
zoo3 = Zoo()
zoo4 = Zoo()
# 创建了4个Zoo类下的实例对象
通过实例对象我们可以访问类中变量和方法:
zoo1 = Zoo()
print(zoo1.cat)
print(zoo1.dog)
print(zoo1.fish)
zoo1.hello()
不同实例对象中的cat、dog等值是互不干扰的,改变其中一个,其他实例对象中的值并不会改变。每一个实例对象都是一个拥有类特性的独立个体。
我们可以让实例对象增加只属于自己的变量和方法:
zoo1 = Zoo()
zoo1.bird = 4
此时实例对象zoo1就比类本体多了个bird变量。
三、继承
我们可以以一个类作为父类定义一个新的子类,该子类继承父类中的变量和方法,还可以添加属于自己的变量和方法,定义方法(使用括号)如下:
class Zoo:
cat = 1
dog = 2
fish = 3
class Garden(Zoo):
bird = 4
garden = Garden()
print(garden.cat)
print(garden.bird)
四、组合
一个类可以同时继承多个父类,称为组合:
class A:
a = 1
b = 2
class B:
c = 3
d = 4
class C(A, B):
pass
c = C()
print(c.a)
print(c.c)
特别注意:组合的情况下,就拿上面的例子来说,如果A类和B类中有相同的对象x,那么此时C中调用x时,会以(A, B)从左至右的顺序检索,直至找到该对象返回,简单点说,就是A中如果有x,那么C中x的值将会和A相同,如果A中没有,就会检索B,此时B中没有则会报错。