python进阶——四、面向对象编程

本文介绍了Python的面向对象编程,包括类的定义、实例的创建与属性、初始化方法、限制访问属性、类属性的创建与访问,以及实例方法和类方法的定义与使用。同时,给出了创建Person类及其相关属性、方法的例子,强调了实例属性优先于类属性的访问规则,以及如何通过类方法获取私有类属性的值。
摘要由CSDN通过智能技术生成

4-1 面向对象编程

一种程序设计范式,把程序看作不同对象相互调用,对现实世界建立对象模型

类(clss):抽象的定义 例如:人

class Person:
    pass

实例:根据类的定义创建 例如:小明,大胸妹,金发妹

daxiongmei = Person()

精髓:数据封装

4-2 定义类并创建实例

类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的。

class Person(object):
    pass
xiaoming = Person()
xiaohong = Person()
print xiaoming
print xiaohong
print xiaoming == xiaohong

结果:

<__main__.Person object at 0x7f333572c450>
<__main__.Person object at 0x7f333566bad0>
False

4-3 创建实例属性

如何让每个实例拥有各自不同的属性?由于Python是动态语言,对每一个实例,都可以直接给他们的属性赋值,例如,给xiaoming这个实例加上name、gender和birth属性:两个实例的属性不一定非要相同。实例的属性可以像普通变量一样操作

xiaohong.grade = xiaohong.grade + 1

请创建包含两个 Person 类的实例的 list,并给两个实例的 name 赋值,然后按照 name 进行排序

class Person(object):
    pass

p1 = Person()
p1.name = 'Bart'

p2 = Person()
p2.name = 'Adam'

p3 = Person()
p3.name = 'Lisa'

L1 = [p1, p2, p3]
L2 = sorted(L1,cmp = lambda p1,p2 :cmp(p1.name,p2.name))

print L2[0].name
print L2[1].name
print L2[2].name #这里可以写点什么让简单点吗?

4-4 初始化实例属性

虽然我们可以自由地给一个实例绑定各种属性,但是,现实世界中,一种类型的实例应该拥有相同名字的属性。例如,Person类应该在创建的时候就拥有 name、gender 和 birth 属性,怎么办?

在定义 Person 类时,可以为Person类添加一个特殊的init()方法,当创建实例时,init()方法被自动调用,我们就能在此为每个实例都统一加上以下属性

class Person(object):
    def __init__(self, name, gender, birth):
        self.name = name
        self.gender = gender
        self.birth = birth

init() 方法的第一个参数必须是 self(也可以用别的名字,但建议使用习惯用法),后续参数则可以自由指定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值