基于面向对象的基础用法已经通过一些实例有了基本的认识,下面将对面向对象的基础用法做一下总结.
类的定义:class 类名:
def __init__(self):注意是两个下划线,默认有一个self对象的参数,初始化方法中还可以定义类的属性,用来初始化类,例如:__init__(self,para1,para2,paran)
类被实例化后,则被称作对象,例如 object1=Class1(para1,para2)
方法是类的成员,可以理解为这个类的功能或是操作,这个类能处理的一些事情。
例如颜色这个类,可以有设置颜色的方法,那么设置颜色则为类的成员方法。
class Color:
def __init__(self,color):
self.color = color
print('初始化了一个颜色%s对象'%color)
def setColor(self,colors):
self.color=colors
存在派生关系的类可以理解为继承,子类继承父类之后可以访问父类的公开成员属性和方法,例如人类,人类可以派生出男人类和女人类,那么继承就可以这么来设计
class Person:
def __init__(self,name):
self.name = name
class Man(Person):
def __init__(self):
print(self.name)
class Woman(Person):
def __init__(self):
print(self.name)
从上面的例子可以看到Man和Woman这个类,继承自Person类,所以都可以访问Person类的属性name
多态就是同一操作(方法)作用于不同的对象时,可以有不同的解释,产生不同的执行结果。这也是面向对象里面较难理解的一大特性。
class Person(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender
def whoAmI(self):
return 'I am a Person, my name is %s' % self.name
class Student(Person):
def __init__(self, name, gender, score):
super(Student, self).__init__(name, gender)
self.score = score
def whoAmI(self):
return 'I am a Student, my name is %s' % self.name
class Teacher(Person):
def __init__(self, name, gender, course):
super(Teacher, self).__init__(name, gender)
self.course = course
def whoAmI(self):
return 'I am a Teacher, my name is %s' % self.name
在一个函数中,如果我们接收一个变量 x,则无论该 x 是 Person、Student还是 Teacher,都可以正确打印出结果:
def who_am_i(x):
print x.whoAmI()
p = Person('Tim', 'Male')
s = Student('Bob', 'Male', 88)
t = Teacher('Alice', 'Female', 'English')
who_am_i(p)
who_am_i(s)
who_am_i(t)
运行结果:
I am a Person, my name is Tim
I am a Student, my name is Bob
I am a Teacher, my name is Alice
相信对以上面向对象的基础知识如果掌握了,对于面向对象的基本使用就没问题了。
更多关于Python的精彩,欢迎点击右上角“关注”红色按钮,关注小编获得更多的Python免费课程。
留言与评论(共有 0 条评论) |