萌新学python3.0 笔记 第5课时 面向对象

面向对象技术简介

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

方法:类中定义的函数。

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

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

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

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

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

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

方法:类中定义的函数。

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


面向对象的三大特征:封装、继承、多态
继承:子类继承父类,子类可以使用父类的属性和方法,简化代码.
         当生成子类对象时,先初始化父类对象,所以如果父类有__init__()方法,并且有属性时,要通过子类的构造赋值
         一个类可以有多个子类
         在子类中,调用父类的属性时,在__init__()方法中使用
         父类.属性,或self.属性或父类.__init__(self,参数)或super(父类,self).__init__(参数)四种方法给父类传参
  

         调用父类方法时:super().父类方法()

class Person:
    def __init__(self,name=None,age=None,sex=None):
         self.name=name
         #1  Person.name=name
         self.age=age
         self.sex=sex
         Person.__init__(self,name,age,sex)
         super(Student, self).__init__(name, age, sex)
    def __str__(self):
         return "我的姓名:{0},我的年龄:{1},我的性别:{2}".format(self.name,self.age,self.sex)


class Student(Person):
    def __init__(self,name=None,age=None,sex=None,score=None):
         self.name = name  #第一种方法
        #Person.name=name  #第二种方法
         self.age = age
         self.sex = sex
        #Person.__init__(self,name,age,sex)    第三种方法
        #super(Student, self).__init__(name,age,sex)  第四种方法
         self.score=score
    def __str__(self):
        return"我的姓名:{0},我的年龄:{1},我的性别:{2},成绩{3}".format(self.name,self.age,self.sex,self.score)
stu=Student("Mary",19,'female',90)
print(stu)
结果:我的姓名:Mary,我的年龄:19,我的性别:female,成绩90
类继承Object

私有属性与方法不能被外部调用。

两个下划线开头,声明该方法为私有方法,只能在类的内部调用,不能在类地外部调用。


单例模式:

   1、单例类只能有一个实例。

    2、单例类必须自己创建自己的唯一实例。

    3、单例类必须给所有其他对象提供这一实例。

class SingleTone:
    __isinstance=None
    def __new__(cls):
        if cls.__isinstance==None:
            cls.__isinstance=object.__new__(cls)
            return  cls.__isinstance
        else:
            return cls.__isinstance
s=SingleTone()
ss=SingleTone()
print(id(s),id(ss))

对象列表排序:重写lt或gt方法

class Car:
    def __init__(self,brand=None,price=None):
        self.brand=brand
        self.price=price

    def __gt__(self,other):
        #支持中文排序:用encode()进行编码
        return self.brand.encode("gbk")<other.brand.encode("gbk")
        #return self.price<other.price
    def __str__(self):
        return self.brand+str(self.price)
lists=[Car("柯尼塞格",8000000),Car("阿尔法罗密欧",1400000),Car("宾利",3000000)]
lists.sort()
for i in lists:
    print(i)

异常:  

try:
  语句
except 异常类型 as 别名:
  语句
else:
  无异常则执行
finally:
  语句

finally的语句无论异常与否都将执行

     

      


猜你喜欢

转载自blog.csdn.net/qq_38929454/article/details/80566685