python面向对象
程序员文章站
2022-07-10 08:30:06
...
python面向对象
从面向对象开始,我们就已经进入了编程语言的高级部分,但我们一定以之前学习的内容为基础,来构建
自己的编程金字塔。
Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。
如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程。
接下来我们先来简单的了解下面向对象的一些基本特征。
面向对象技术简介
这个部分介绍的不仅仅是独指python,他是所有具有面向对象语言应该有的并且能实现的概念,务必牢记每一条。
专业名词 | 定义 |
---|---|
类(Class): | 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例 |
方法重写 | 如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写 |
实例化 | 创建一个类的实例,类的具体对象 |
其实还有一些,只是写到这儿我觉得稍显枯燥,所以把神秘的面纱交给各位coder自己去查阅了
创建类
简单的类编写:
class MyClass:
"""一个简单的类实例"""
i = 12345
def f(self):
return 'hello world'
# 实例化类
x = MyClass()
# 访问类的属性和方法
print("MyClass 类的属性 i 为:", x.i)
print("MyClass 类的方法 f 输出为:", x.f())
# 输出结果为:
# MyClass 类的属性 i 为: 12345
# MyClass 类的方法 f 输出为: hello world
构造器
构造器再使用的时候,即使类本身没有这个属性,也可以调用,即用即取
class Complex:
def __init__(self, realpart, imagpart):
self.r = realpart
self.i = imagpart
x = Complex(3.0, -4.5)
print(x.r, x.i) # 输出结果:3.0 -4.5
self
self代表类的实例,而非类
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。
class Test:
def prt(self):
print(self)
print(self.__class__)
t = Test()
t.prt()
继承
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))
s = student('ken',10,60,3)
s.speak()
更厉害的是,python支持多继承哟~ 格式和单继承并没有多大的区别
class DerivedClassName(Base1, Base2, Base3):
<statement-1>
...
<statement-N>
私有化
私有化的表示就很简单了,在属性和方法的前面加上两个下划线就表示私有了 “__”。
这个私有就是真的私有了,实例都不能访问它。