Python面向对象编程

目录

面向对象概述

类和对象

构造函数

属性(类变量)和方法

代码检验:

 运行结果:

继承与重写

代码检验:

运行结果:


面向对象概述

Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。
面向对象技术简介:
•  类(Class):
用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的
属性和方法。对象是类的实例。
•  类变量: 类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量
通常不作为实例变量使用。
•  数据成员: 类变量或者实例变量用于处理类及其实例对象的相关的数据。
•  方法重写: 如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的
覆盖(override),也称为方法的重写。
•  实例变量: 定义在方法中的变量,只作用于当前实例的类。
•  继承: 即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把
一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自
Animal类,这是模拟“是一个(is-a)”关系。
•  实例化: 创建一个类的实例,类的具体对象。
•  方法: 类中定义的函数。
•  对象: 通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。


类和对象

• 类的定义格式:
        class ClassName:
                <statement-1>
                ...
                …
                <statement-N>

• 类实例化成对象:
        对象 = ClassName([参数列表])
• 对象的使用:
        对象.属性名
        对象.方法( )


构造函数

• 构造函数:__init__()
类定义了 __init__() 方法的话,类的实例化操作会自动调用 __init__() 方法。
__init__() 方法可以有参数,参数通过 __init__() 传递到类的实例化操作上。
• Self 说明:
self 代表的是类的实例,代表当前对象的地址,而 self.class 则指向类。
self 不是 python 关键字,我们可以换成其他变量名


属性(类变量)和方法

• 使用 def 关键字来定义一个方法.与一般函数定义不同,类方法必须包含参数
self
, 且为第一个参数,self 代表的是类的实例
self 的名字并不是规定死的,也可以使用 this,但最好按照约定是self
• 类的私有属性:private_attrs
两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访
问。在类内部的方法中使用self调用
• 类的私有方法:private_method
两个下划线开头,声明该方法为私有方法,只能在类的内部调用
(self) ,不能在类地外部调用


代码检验:

# 类中的属性和方法
class Person:
    name = ""
    __age = 0

    def __init__(self, name, age):
        self.name = name
        self.__age = age

    def getinfo(self):
        print(self.name, ":", self.__age)
        self.__demo()

    def __demo(self):
        print("private method()")


#构造方法可以实现,实例化对象的使用就可以初始化属性
p = Person("Jerry", 18)
# print(p.__age) 不可访问对象中的私有属性
p.getinfo()

 运行结果:


继承与重写

Python 同样支持类的继承,如果一种语言不支持继承,类就没有什么意义。派
生类的定义如下所示:
        class 子类(父类):
                <statement-1>
                ...…
                <statement-N>

方法重写(重载):
如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法
多继承:
需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用
时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类
中是否包含方法。


代码检验:

#类的继承和方法重写

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

    def getinfo(self):
        print("我的名字:%s;年龄:%d岁." % (self.name, self.age))


#定义子类(派生类)
class Stu(Person):
    def __init__(self, name, age, school):
        Person.__init__(self, name, age)    #构造父类
        self.school = school

    #方法重写(升级,优化)
    def getinfo(self):
        print("我的名字:%s;年龄:%d岁;学校:%s" % (self.name, self.age, self.school))

    #子类定义父类没有的方法,叫扩展
    def fun(self):
        print("Jerry_mvp")


#测试
s = Stu("Jerry", 20, "索马里大学")
s.getinfo()
s.fun()

#多继承
print("="*50)


class A:
    def fun(self):
        print("class A...")


class B:
    def fun(self):
        print("class B...")


class C(A, B):
    pass


c = C()
c.fun()

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jerry_ww

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值