「关注我,和我一块儿放下灵魂,让灵魂去搬砖。」正则表达式
Python版本3.8.0,开发工具:Pycharm编程
面向对象编程(Object Oriented Programming,OOP),是使用对象(Objects)做为核心的编程方式。进而就能够把对象(Objects)的数据和运算过程封装(Encapsulate)在内部,而外部仅能根据事先设计好的界面(Interface)与之沟通。bash
对象的构成:微信
举个例子:建立一个对象Teacher(老师)函数
Teacher的属性有name(姓名)、age(年龄)等,Teacher 的方法有teacher(上课)、study(学习)工具
EnglishTeacher(英语老师)也属于Teacher,因此EnglishTeacher能够继承Teacher而且使用Teacher的属性和方法post
MathTeacher(数学老师)的teach方法不一样于EnglishTeacher,因此能够对方法进行重写。学习
__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。开发工具
在类的内部,使用 def关键字来定义一个方法,与通常函数定义不一样,类方法必须包含参数 self,且为第一个参数,self 表明的是类的实例。ui
self 的名字并非规定死的,也可使用 this,可是最好仍是按照约定用 self。
__private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用。在类内部调用self.__private_methods。
Class 使用 class 关键字进行定义。class name使用驼峰标识,例如MyClass
# 定义类
class Teacher:
def __init__(self, name, age):
self.name = name
self.age = age
def teach(self):
print("{0} teach".format(self.name))
def study(self):
print("{0} study".format(self.name))
# 建立类的实例
my_teacher = Teacher("zhangsan", 18)
my_teacher.teach()
# 输出
zhangsan teach
复制代码
注:
继承,顾名思义,新的事物拥有旧事物的特征,而且能够传递下去。
在Python中,继承的范围更广,好比定义一个实例Teacher,则新的实例EnglishTeacher是老师,因此能够继承Teacher。老师有姓名、年龄、性别等属性,有上课、学习等方法,则英语老师继承老师的全部属性和方法。
再好比,定义一个实例Mother母亲,定义一个实例Father父亲,则新的实例Kids孩子不但能够继承Mother还能够继承Father。
以上两个例子分别是单继承和多继承。
Python能够实现单继承和多继承
# # EnglishTeacher继承Teacher类
class EnglishTeacher(Teacher):
def __init__(self, name, age, score):
self.name = name
self.age = age
self.score = score
def teach(self):
print("{0} teach".format(self.name))
# 建立类的实例
teacher = EnglishTeacher("xiaomeng", 10)
teacher.teach()
# 输出
xiaomeng teach
复制代码
# 定义父亲类
class Father:
def __init__(self, name, age):
self.name = name
self.age = age
def speak(self):
print("{0} is father".format(self.name))
# 定义母亲类
class Mother:
def __init__(self, name, age):
self.name = name
self.age = age
def speak(self):
print("{0} is mother".format(self.name))
# Kid继承Father和Mother类
class Kid(Father, Mother):
def speak(self):
print("{0} is kid".format(self.name))
# 建立类的实例
kid = Kid("student", 6)
kid.speak()
# 输出
baby is kid
复制代码
在咱们定义的老师实例中,老师有上课、学习两个方法,可是英语老师上英语课,数学老师上数学课,不一样实例的老师有不一样的方法实现,这个时候,咱们在建立不一样老师实例的过程当中须要对方法进行重写。
# 建立类的实例
class EnglishTeacher(Person):
# 重写run 方法
def teach(self):
print("english teacher {0} teach".format(self.name))
student = Student("xiaomeng", 10)
student.walk()
# 输出
english teacher xiaomeng teach
复制代码
运算符重载相似于方法重写,不过运算符的方法属于Python定义好的,咱们在建立的时候不须要声明均可以进行重载!
class Vector:
def __init__(self, a, b):
self.a = a
self.b = b
def __str__(self):
return 'Vector (%d, %d)' % (self.a, self.b)
# 对 + 运算符重载
def __add__(self,other):
return Vector(self.a + other.a, self.b + other.b)
v1 = Vector(2,10)
v2 = Vector(5,-2)
print (v1 + v2)
# 输出
Vector (7, 8)
复制代码
Python系列会持续更新,从基础入门到进阶技巧,从编程语法到项目实战。若您在阅读的过程当中发现文章存在错误,烦请指正,很是感谢;若您在阅读的过程当中能有所收获,欢迎一块儿分享交流。
若是你也想和我一块儿学习Python,能够关注个人微信公众号
学习Python,咱们不仅是说说而已