12-Python基础之类与面向对象

Python基础之类与面向对象

类的初始化:

class Defun(object): #(object)可加可不加,不加默认继承(object)
    def __init__(self,*args):
        self.name = args[0]  #args的第一个元素
        '''
        '''
        self.N_numbers = args[-1]  #args的最后一个元素

 

类的属性引用与实例化

#定义一个学生类
class Student:#定义一个学生类,
    def __init__(self,name,sex,classes):#属性为名字,性别,班级
        self.name = name
        self.sex = sex
        self.classes = classes
    def goschool(self): #方法去上学
        print('%s去上学,%s在%s'%(self.name,self.name,self.classes))
Liming = Student('李明','','12班')  
Liming.goschool()

  类的属性:定义一个Student类,属性为name,sex,classes

  类的方法:本质是类中的函数,可以通过类名.方法名调用。

  类的实例化过程:类名()的过程就是实例化,会自动触发__init__函数的运行,可以用他来实例定制每个对象的特征,即实例化之后是一个对象,对象包含类的属性,方法,即李明是一个对象,对李明进行类的实例化就是一个具体存在的对象李明。

查看类的属性与调用方法

实例化过程就是类-----》对象的过程,可以通过对象.属性或者对象.方法查看

#定义一个学生类
class Student:#定义一个学生类,
    def __init__(self,name,sex,classes):#属性为名字,性别,班级
        self.name = name
        self.sex = sex
        self.classes = classes
    def goschool(self): #方法去上学
        print('%s去上学,%s在%s'%(self.name,self.name,self.classes))
Liming = Student('李明','','12班')
#查看属性或者方法
print(Liming.name,Liming.sex,Liming.classes)  #查看属性
Liming.goschool()   #执行方法

 

类命名空间与对象、实例的命名空间

对象的知识:

  对象是关于类中实际存在的一个例子,就实例,对象/实例只有一种作用,即属性引用

创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性

类的两种属性:

  静态属性:直接在类中定义的变量,类的静态属性是共享给所有对象的

  动态属性:类中定义的方法,类的动态属性是绑定到所有对象的

 

创建一个对象/实例就会创建一个对象/实例的名称空间,存放对象/实例的名字,称为对象/实例的属性

  类会从自己空间开始查找属性或者方法,找不到就去父类中找,父类中都找不到就会报错

 

面向对象的组合用法

 

软件重用除了继承之外还有一种方式,即组合,组合指的是在一个类中,以另外一个类的对象作为类的属性,称为类的组合,组合想表达的意思是一种有的关系

如人有生日,爱好,工作,

人可以作为一个类,爱好也可以作为一个类工作也可以作为一个类,组合之后可以描述为人有爱好,有工作,有生日

#定义一个人类
class Person:
    def __init__(self,name,ID,birthday,hobby,work):
        self.name = name
        self.ID = ID
        self.birthday = birthday
        self.hobby = hobby
        self.work = work
#生日
class Birthday:
    def __init__(self,year,month,day):
        self.year = year
        self.month = month
        self.day = day
#爱好
class Hobby:
    def __init__(self,hobby):
        self.hobby = hobby
#工作
class Work:
    def __init__(self,work,salary):
        self.work = work
        self.salary = salary
#实例化为阿红
Ahong = Person('阿红','123456',Birthday('2010','12','3'),Hobby('swim'),Work('IT','250'))

print(Ahong.birthday.year)
print(Ahong.hobby.hobby)
print(Ahong.work.work)
print(Ahong.ID)
'''
打印:
2010
swim
IT
123456

'''

 

面向对象的三大特性:继承,多态,封装

继承

继承:继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类

继承又分为单继承和多继承,如果没有指定基类,python的类会默认继承object类,object是所有python类的基类,它提供了一些常见方法(如__str__)的实现。

 

继承与抽象:处理一堆事物时候,我们可以先将这堆事物相似的部抽象出来,之后继承抽象的部分。实现代码的精简

继承与重用性:在开发程序的过程中,如果我们定义了一个类A,然后又想新建立另外一个类B,但是类B的大部分内容与类A的相同时我们不可能从头开始写一个类B,这就用到了类的继承的概念。通过继承的方式新建类B,让B继承A,B会‘遗传’A的所有属性(数据属性和函数属性),实现代码重用

 

派生:当然子类也可以添加自己新的属性或者在自己这里重新定义这些属性(不会影响到父类),需要注意的是,一旦重新定义了自己的属性且与父类重名,那么调用新增的属性时,就以自己为准了。

注:通过继承建立了派生类与基类之间的关系,它是一种'是'的关系,比如白马是马,人是动物。当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好,比如教授是老师,组合是有的关系

 

抽象类与接口类

 

多态:多态指的是一类事物有多种形态

 

posted @ 2018-12-02 10:19  让我遇见你  阅读(118)  评论(0编辑  收藏  举报