Python面向对象基础
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python面向对象基础相关的知识,希望对你有一定的参考价值。
一、OOP
oop就是代码的重用,通过分解代码,最小化代码的冗余以及对现存的代码进行定制来编写程序;OOP模型中有两种对象,类对象和实例对象。类对象提供默认行为,是生产实例对象的工厂;类对象和实例对象都有各自命名空间。
二、python类的主要特性
? class语句创建类对象并将其赋值给变量名
? class语句内的顶层赋值语句会创建类的属性
? 类属性提供对象的状态和行为
三、python实例对象的主要特性
? 每次类调用时,都会创建并返回新的实例对象
? 每个实例对象继承类的属性并获得了自己的命名空间
? 每个实例对象通过构造方法获得每个实例自己的属性
四、创建类和实例对象-类的封装
封装,是将对象的数据与操作数据的方法相结合,通过方法将对象的数据与实现细节保护起来,就称为封装。外界只能通过对象的方法访问对象,因此封装同时也实现了对象的数据隐藏
class Person():
#类的属性--静态属性
country="China"
#封装--初始化方法
def __init__(self,*args):
self.name=args[0]
self.age=args[1]
self.aggr=args[2]
self.sex=args[3]
#方法
def walk(self,n):
print("%szoule%sbu"%(self.name,n))
#调用类创建实例对象,自动执行构造方法__init__
jonny=Person(‘jonny‘,11,23,‘man‘)
#实例对象调用类的方法
jonny.walk(10)
#实例对象调用类的属性
print(jonny.country)
五、类的继承
单继承
类可以通过继承进行定制;类的继承丰富了软件的层级,在层级较低的地方覆盖现有的属性,让其行为特定化。
在python中,实例对象从类中继承,而类继承于超类
? 超类写在类开头的括号中
? 类从其超类中继承属性
? 实例会继承所有可读取类的属性
? 每次实例对象的属性调用都会进行类树搜索
? 逻辑的修改是通过创建子类,而不是修改超类
#创建父类---经典类
class a():
a1="11"
#创建子类,继承父类a
class b(a):
b1="22"
#调用父类的属性
print(b.a1)
以上的例子中父类是经典类,因为父类未继承object类;继承object类的父类是新式类
#创建父类---新式类
class a(object):
a1="11"
#创建子类,继承父类a
class b(a):
b1="22"
#调用父类的属性
print(b.a1)
在继承中,父类是经典类那么子类就是经典类;父类是新式类,子类就是新式类
多继承
python支持继承多个类,那么在继承父类的属性和方法时改怎么找呢?
class D(object):
def display(self):
print(‘D.display‘)
class C(D):
def display(self):
print(‘C.display‘)
class B(D):
def display(self):
print(‘B.display‘)
class A(B,C):
def display(self):
print(‘A.display‘)
a=A()
a.display()
执行display方法时,查找顺序为 A--B--C--D
六、类的多态
类的多态性是指具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容的函数。
class Person():
def display(self):
pass
class Man(Person):
def display(self):
print("man")
class Woman(Person):
def display(self):
print("woman")
def func(obj):
obj.display()
#实例化对象
man1=Man()
woman1=Woman()
#多态
func(man1)
func(woman1)
以上是关于Python面向对象基础的主要内容,如果未能解决你的问题,请参考以下文章