Python基本语法之面向对象

版权声明:转载请注明出处及作者! https://blog.csdn.net/chenzhanhai/article/details/84192304

面向对象技术简介

名称

说明

类(Class)

类是用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

方法

类中定义的函数。

类变量

类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。

数据成员

类变量或者实例变量用于处理类及其实例对象的相关的数据。

方法重写

如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

实例变量

定义在方法中的变量,只作用于当前实例的类。

继承

即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(Dog是一个Animal)。

实例化

创建一个类的实例,类的具体对象。

对象

通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

类的专有方法如下,类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

类的专有方法

方法说明

__init__

构造函数,在生成对象时调用

__del__

析构函数,释放对象时使用

__repr__

打印,转换

__setitem__

按照索引赋值

__getitem__

按照索引获取值

__len__

获得长度

__cmp__

比较运算

__call__

函数调用

__add__

加运算

__sub__

减运算

__mul__

乘运算

__truediv__

除运算

__mod__

求余运算

__pow__

乘方

 

 

 

 

 

 

 

 

 

 

 

典型的类示例

class People:
    name = ''
    __age = 0
    def __init__(self, n, a):
        self.name = n
        self.__age = a
    def speak(self):
        print("%s say: I am %d years old." %(self.name,self.__age))

p = People('shenzhen', 38)
p.speak()

其中, People为类名,p为类的实例,name为类变量,__age为私有实例变量,__init__(self, n, a)为构造函数,speak为类内普通函数。

示例代码运行结果:

 

类的继承

继承是类的最重要的一个特性,类的继承语法如下:

class DerivedClassName(BaseClassName1):
    <statement-1>
    .
    .
    .
    <statement-N>

继承示例代码如下:

class People:
    name = ''
    age = 0
    def __init__(self, n, a):
        self.name = n
        self.age = a
    def speak(self):
        print("%s say: I am %d years old." %(self.name,self.age))


class Student(People):
    grade = ""
    def __init__(self,n,a,g):
        People.__init__(self,n,a)
        self.grade = g
    def speak(self):
        print("%s say: I am %d years old, and I am in %d grade"%(self.name, self.age, self.grade))
 
p = People('shenzhen', 38)
p.speak() 
s = Student('xiaoming', 10, 3)
s.speak()

在例子中Peple类为基类,Student类为继承Peple的子类,在Student类中的构造函数中调用了父类的构造函数,并且子类重写了父类的方法speak。

示例运行结果如下:

多重继承

一个类可以继承多个类,这叫多重继承,多重继承的语法如下:

class DerivedClassName(Base1, Base2, Base3):
    <statement-1>
    .
    .
    .
    <statement-N>

多重继承示例代码:

class People:
    name = ''
    age = 0
    def __init__(self, n, a):
        self.name = n
        self.age = a
    def speak(self):
        print("%s say: I am %d years old." %(self.name,self.age))


class Student(People):
    grade = ""
    def __init__(self,n,a,g):
        People.__init__(self,n,a)
        self.grade = g
    def speak(self):
        print("%s say: I am %d years old, and I am in %d grade"%(self.name, self.age, self.grade))
 

class Speaker():
    topic = ""
    name = ""
    def __init__(self, n, t):
        self.name = n
        self.topic = t
    def speak(self):
        print("I am %s, I am a speaker, my topic is %s"%(self.name,self.topic))
 
class Sample(Speaker, Student):
    a =''
    def __init__(self,n,a,g,t):
        Student.__init__(self,n,a,g)
        Speaker.__init__(self,n,t)


p = People('shenzhen', 38)
p.speak() 
s = Student('xiaoming', 10, 3)
s.speak()
sp = Speaker('Jack', 'Python Programming')
sp.speak()
test = Sample("Tim",25,4,"Python3 Programming")
test.speak()

在上例中,Sample类继承了Student和Speaker类,然后调用了父类的speak方法,因为两个父类都有这个方法,默认调用的是在括号中排前地父类的方法。

示例运行结果如下:

 

 

如果你喜欢这篇文章,别忘了点赞和评论哦!

猜你喜欢

转载自blog.csdn.net/chenzhanhai/article/details/84192304