这篇文章主要介绍了Python面向对象编程基础,结合实例形式分析了Python面向对象编程类的定义、继承、特殊方法及模块相关原理与操作技巧,需要的朋友可以参考下
本文实例讲述了Python面向对象编程基础。分享给大家供大家参考,具体如下:
1、类的定义
Python中类的定义与对象的初始化如下,python中所有类的父类是object,需要继承。
由于Python是动态语言,因此可以直接为对象添加属性并赋值而不必在类定义中声明
class Person(object): # 定义一个Person类
pass
p = Person() # 初始化一个Person对象
p.name="xiaoming" # 对象属性赋值
Python的类初始化方法为__init__(),其第一个参数为self代之对象自身,其后为各个参数,初始化就是将传入的参数赋值给对象的属性。**kw代表任意数量的属性,通过key=attribute的形式传入,之后通过setattr()方法将每个属性赋值给对象。
直接在class中定义的变量称为类属性,在__init__()中定义的为对象属性,类属性供所有对象共享,对象只能访问却无权修改。当通过对象给类属性赋值时,会为对象新建一个同名的对象属性,而不是修改类属性。无论在类的内部还是外部,都通过类名对类属性进行访问。
以__开头的变量无法被外部访问,类似于私有变量。这时就需要对象的实例方法从类的内部访问私有变量并做出相应的操作,这样在类的内部定义的方法叫做实例方法,实例方法的第一个参数默认为self代表对象自己。
相应地类方法只能访问类属性,其定义方式是在之前添加标记@classmethod:,其第一个参数cls代表类本身
class Person(object):
count = 0 # 类属性
@classmethod:
def get_count(cls): # 类方法
return cls.count
def __init__(self,name,gender,birth,**kw):
Person.count+=1 # 访问类属性
self.name = name
self.__gender = gender
self.birth = birth
for k, v in kw.iteritems(): # 遍历之后的键值对,设置属性
setattr(self, k, v)
def get_name(self): # 定义实例方法
return self.__name
xiaoming = Person('Xiao Ming', 'Male', '1990-1-1', job='Student')
xiaoming.count==9 # 为对象创建属性,不会修改Person.count
print(xiaoming.job) # 显示Student
print(xiaoming.__gender) # 无法访问,抛出异常AttributeError
print(xiaoming.get_name()) # 通过实例方法访问内部变量
2、类的继承
Python中类的继承方式如下。值得注意的是在子类Teacher中