基本语法:
class DerivedClassName(BaseClassName1):
1>
.
.
.
需要注意圆括号中父级类的顺序,若是父级类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父级类中是否包含方法。
示例:
class A(object):
pass
class B(object):
pass
class C(A, B):
pass
C 继承了 A 和 B,C 称为 A,B 的派生类,C 可以直接获取 A 和 B 里面定义的所有方法和变量
派生类
在寻找变量和方法的时候,优先寻找自身的方法和变量
,最后在去继承的类里面去寻找。类自身的
__init__
方法不会被其他类调用。但是可以调用。参考继承示例
继承示例
# 定义基本类
class people():
#定义基本属性
name = ''
age = 0
#定义私有属性,私有属性在类外部无法直接进行访问
__weight = 0
#定义构造方法构造器
def __init__(self,n,a,w):
self.name = n
self.age = a
self.__weight = w
def speak(self):
print("%s 说: 我 %d 岁。" %(self.name,self.age))
# 定义单继承类
class student(people):
grade = ''
def __init__(self,n,a,w,g):
#调用父类的构造函数
people.__init__(self,n,a,w)
self.grade = g
# 覆盖写入父类的方法
def speak(self):
print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))
s = student('ken',10,60,3)
s.speak()
父级类的
__init__
方法可以被子级的类调用子级类如果包含和父级类一样的变量或方法,会在调用的时候,覆盖父级类的变量或方法。
示例
class DerivedClassName(Base1, Base2, Base3):
1>
.
.
.
需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。
若子类中有相同的方法或变量,优先调用子类的方法或变量
#类定义
class people:
#定义基本属性
name = ''
age = 0
#定义私有属性,私有属性在类外部无法直接进行访问
__weight = 0
#定义构造方法
def __init__(self,n,a,w):
self.name = n
self.age = a
self.__weight = w
def speak(self):
print("%s 说: 我 %d 岁。" %(self.name,self.age))
#单继承示例
class student(people):
grade = ''
def __init__(self,n,a,w,g):
#调用父类的构函
people.__init__(self,n,a,w)
self.grade = g
#覆写父类的方法
def speak(self):
print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))
#另一个类,多重继承之前的准备
class speaker():
topic = ''
name = ''
def __init__(self,n,t):
self.name = n
self.topic = t
def speak(self):
print("我叫 %s,我是一个演说家,我演讲的主题是 %s"%(self.name,self.topic))
#多重继承
class sample(speaker,student):
a =''
def __init__(self,n,a,w,g,t):
student.__init__(self,n,a,w,g)
speaker.__init__(self,n,t)
test = sample("Tim",25,80,4,"Python")
test.speak() #方法名同,默认调用的是在括号中排前地父类的方法