Python入门进阶教程-面向对象
admin
2023-02-14 08:20:04
0

Python入门进阶教程-面向对象
面向对象编程(Object Oriented Programming,OOP),是使用对象(Objects)作为核心的编程方式。
进而就可以把对象(Objects)的数据和运算过程封装(Encapsulate)在内部,而外部仅能根据事先设计好的界面(Interface)与之沟通。

对象的构成:

属性 —— 用自然语言描述,通常是名词(Nouns)
方法 —— 用自然语言描述,通常是动词(Verbs)
举个例子:创建一个对象Teacher(老师)

Teacher的属性有name(姓名)、age(年龄)等,Teacher 的方法有teacher(上课)、study(学习)

EnglishTeacher(英语老师)也属于Teacher,所以EnglishTeacher可以继承Teacher并且使用Teacher的属性和方法

MathTeacher(数学老师)的teach方法不同于EnglishTeacher,所以可以对方法进行重写。

类的私有属性

private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.private_attrs。

类的方法

在类的内部,使用 def关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数,self 代表的是类的实例。

self 的名字并不是规定死的,也可以使用 this,但是最好还是按照约定用 self。

类的私有方法

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

Python 类定义

Class 使用 class 关键字进行定义。class name使用驼峰标识,例如MyClass:

# 定义类
class Teacher:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def teach(self):
        print("{0} teach".format(self.name))

    def study(self):
        print("{0} study".format(self.name))

# 创建类的实例
my_teacher = Teacher("zhangsan", 18)
my_teacher.teach()

# 输出
zhangsan teach

注:
self 用来指代将来用这个 Class 创建的 Instance实例。
init() 函数是系统创建实例后被初始化的函数。这个函数名称是强制指定的,初始化函数必须使用这个名称;注意 init 两端各有两个下划线 _。
self.name,self.age 各接收了一个参数,表示用户属性
Python 类继承

继承,顾名思义,新的事物拥有旧事物的特征,并且可以传递下去。

在Python中,继承的范围更广,比如定义一个实例Teacher,则新的实例EnglishTeacher是老师,所以可以继承Teacher。老师有姓名、年龄、性别等属性,有上课、学习等方法,则英语老师继承老师的所有属性和方法。

再比如,定义一个实例Mother母亲,定义一个实例Father父亲,则新的实例Kids孩子不但可以继承Mother还可以继承Father。

以上两个例子分别是单继承和多继承。

Python可以实现单继承和多继承

单继承

# # EnglishTeacher继承Teacher类
class EnglishTeacher(Teacher):
    def __init__(self, name, age, score):
        self.name = name
        self.age = age
        self.score = score

    def teach(self):
        print("{0} teach".format(self.name))

# 创建类的实例
teacher  = EnglishTeacher("xiaomeng", 10)
teacher.teach()

# 输出
xiaomeng teach

多继承

# 定义父亲类
class Father:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def speak(self):
        print("{0} is father".format(self.name))

# 定义母亲类
class Mother:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def speak(self):
        print("{0} is mother".format(self.name))

# Kid继承Father和Mother类
class Kid(Father, Mother):
    def speak(self):
        print("{0} is kid".format(self.name))

# 创建类的实例
kid = Kid("student", 6)
kid.speak()

# 输出
baby is kid

相关内容

热门资讯

德国总理:美国正在被伊朗羞辱 德国之声4月27日报道,德国总理默茨在访问一所学校时表示,在当前的持续冲突中,伊朗领导层正试图羞辱美...
理响中国|“长”歌以行,风云激... 光阴如梭,东方潮阔。这里是中国的长三角,世界的长三角。无论过去、现在还是未来,这片土地都因时代而生,...
白宫:特朗普及其国安团队开会讨... 新华社华盛顿4月27日电 美国白宫新闻秘书莱维特27日在记者会上证实,总统特朗普及其国家安全团队当天...
人民日报刊文:日本放开杀伤性武... 日本放开杀伤性武器出口推高地缘冲突风险(国际论坛)常思纯《人民日报》(2026年04月28日 第 0...
医疗保障法草案二审:明确生育保... 满足多样化健康保障需求本报记者 彭 波4月27日,医疗保障法草案二审稿提请十四届全国人大常委会第二十...
天津一景区发生自转旋翼机事故1... 澎湃新闻记者 吕新文中国民用航空华北地区管理局4月22日公布《豪客通航“10•1”天津长芦汉盐旅游区...
卡塔尔埃米尔与美国总统特朗普通... 当地时间24日,卡塔尔埃米尔塔米姆与美国总统特朗普通电话,重点就中东地区局势以及伊朗与美国谈判问题交...
男子30年前被扣押2859克黄... 澎湃新闻记者 王鑫家住辽宁省大连市的潘永嘉近日向澎湃新闻反映称,三十年前,他在大连周水子机场被盖州市...
商务部:取消反制欧盟两家金融机... 中华人民共和国商务部令二〇二六年 第1号鉴于欧盟已取消对中国两家金融机构的制裁措施,现公布《关于取消...
过去24小时共有5艘船只通过霍... 总台记者当地时间24日获悉,过去24小时内,共有5艘船只通过霍尔木兹海峡,其中包括一艘伊朗油轮。(总...