1、新式类和旧式(经典)类
新式类:以object为基类的类
经典类:不以object为基类的类
在python3.X中定义的类时,如果没有指定父类,会默认使用object作为基类–python3.x中定义的类都是新式类
在python2.x中定义类时,如果没有指定父类,则不会以object作为基类
为保证编写的代码能够同时在python2.x和python3.x运行,今后在定义类时,如果没有父类,建议统一继承自object
2、类属性和类方法
类属性:针对类本身定义的属性, 使用赋值语句在class关键字下可以定义类属性,这类属性归类本身所有。使用类名.属性调用类属性
当我们定义了一个类属性后,这个属性虽然归类所有,但类的所有实例都可以访问到,当实例并没有该属性,所以会继续查找class的该属性
class Animal(object):
name = 'Animal' #定义类属性
def run(self):
print('animal is running')
print(Animal.name) # 输出类属性
cat = Animal() # 实例化一个对象
print(cat.name) # 实例没有name属性,继续访问类属性
#输出结果:
Animal
Animal
在编写程序的时候,千万不要对实例属性和类属性使用相同的名字,因为实例属性优先级高于类属性。相同名称的实例属性将屏蔽掉类属性,但是当你删除实例属性后,再使用相同的名称,访问到的将是类属性
class Animal(object):
name = 'Animal' # 定义类属性name
def __init__(self,name):
self.name = name # 定义实例属性name
def run(self):
print('animal is running')
cat = Animal('to