1.基础应用
class Animal(object):
def eat(self):
print("动物吃东西")
class Cat(Animal):
def eat(self):
print("猫吃鱼")
# 格式一:父类名.方法名(对象)
Animal.eat(self)
# 格式二:super(本类名,对象).方法名()
super(Cat, self).eat()
# 格式三:super()方法名()
super().eat()
cat1 = Cat()
cat1.eat()
print(cat1)2.实际应用
#用元类实现单例模式
class SingletonType(type):
instance = {}
def __call__(cls, *args, **kwargs):
if cls not in cls.instance:
# 方式一:
# cls.instance[cls] = type.__call__(cls, *args, **kwargs)
# 方式二
# cls.instance[cls] = super(SingletonType, cls).__call__(*args, **kwargs)
# 方式三
cls.instance[cls] = super().__call__(*args, **kwargs)
return cls.instance[cls]
class Singleton(metaclass=SingletonType):
def __init__(self, name):
self.name = name
s1 = Singleton('1')
s2 = Singleton('2')
print(id(s1) == id(s2))3.注意
1.当一个类存在多继承时,它继承的多个父类有相同的父类a,在重写其父类时需要注意
方法一:父类名.方法名(对象)
父类A会被调用多次(根据继承的个数)
重写父类时根据需要传递所需要的参数
方法二:super(本类名,对象).方法名()
立即学习“Python免费学习笔记(深入)”;
在原有基础上进行了较大改动进行了代码重写,页面结构和数据库结构均作了优化,基本功能: 1. 精美flash导入页面; 2. 产品发布,支持一级分类; 3. 公司简介、售后服务、联系我们,可进行后台管理; 4. 也可以照“公司简介”的方法增加其他内容,如企业文化、企业荣誉... 5. 采用eWebEditor是网站后台具有强大的编辑功能; 初始帐号: admin 初始密码: admin888
父类A也只会被调用一次
重写父类方法必须传递所有参数
2.当一个类存在继承,且已经在子类中重写相应的变量,改变父类的变量不会对子类有影响
class Parent(object):
x = 1
class Child1(Parent):
pass
class Child2(Parent):
pass
print(Parent.x, Child1.x, Child2.x)
Child1.x = 2
print(Parent.x, Child1.x, Child2.x)
Parent.x = 3
print(Parent.x, Child1.x, Child2.x)输出结果
1 1 11 2 13 2 3










