本文参考:https://www.runoob.com/python3/python3-class.html
Python 是一门面向对象的语言
面向对象技术简介:
类(Class):定义一个集合中每个对象所共有的属性和方法。
类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
类中的函数与其他函数不同,类中的函数必须包含参数self(self 不是python的关键字,可以换为其他字符),而且必须为第一个参数,self代表类的实例。
类的定义:
#类定义
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))
# 实例化类
p = people('runoob',10,30)
p.speak()
起输出结果为:runoob 说: 我 10 岁。
类的继承:
#单继承示例
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))
其中,student 是派生类(DerivedClass),people 是基类发(BaseClass)。派生类集成了基类中的变量和方法(函数)。
#多重继承实例
#另一个类,多重继承之前的准备
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() #方法名同,默认调用的是在括号中排前的基类的方法
派生类可以继承多个基类。若基类中有相同的方法名,派生类又没有指定用哪个基类的方法,则python会从左至右搜索基类中的方法。
方法重写:
派生类中可以重写基类的方法。即派生类中的函数可以与基类中的函数名相同,函数体内容可以不一样,调用时只需要指定调用的时派生类的方法就可以了。
私有属性和私有方法:
__privateAttrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。
__privateMethod:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用