鱼C论坛

 找回密码
 立即注册
查看: 1321|回复: 0

[技术交流] python入门L36类和对象

[复制链接]
发表于 2017-7-30 21:01:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
封装:将数据都放在一个列表,将常用的代码段打包成一个函数,对象则是两种的合一,更高级别的封装。

对象等于属性加方法
静态的特征称为属性
动态的动作称为方法


例子:
class Turtle:  #Python 中的类名约定以大写字母开头
    """关于类的一个简单例子"""
    #属性
    color ='green'
    weight =10
    legs=4
    shell= True
    mouth='大嘴'

    #方法
    def climb(self):
        print("我正在很努力地向前爬...")
    def run(self):
        print("我正在很努力地向前跑")
    def bite(self):
        print("我咬死你咬死你!!")
    def eat(self):
        print("有的吃,真满足^_^")
    def sleep(self):
        print("困了,睡了,晚安,Zzzz")
此代码段定义了对象的属性和方法,但这并不是对象,充其量称为类对象
我们需要用类来创建一个真正的对象
类的作用是使对象达到量产的效果
创建一个实例对象,也叫做类的实例化
调用类和调用函数是一样的,为了区分将类的名称大写开头,函数名小写字幕开头。
>>> tt=Turtle() #此处赋值操作并不是必须的,此处将一个已经创建好的变量赋值给tt这个变量。
>>> Turtle()
<__main__.Turtle object at 0x02E0CC50>
#但如果直接这样写,并没有任何引用,python中的垃圾回收机制就将其回收了。
>>> tt.climb()
我正在很努力地向前爬...
>>> tt.bite()
我咬死你咬死你!!
>>> tt.sleep()
困了,睡了,晚安,Zzzz

OO的特征
OO=ObjectOriented 面向对象
python是纯粹的面向对象的编程语言
1 封装
对象封装了属性和方法成为一个独立性很强的模块
封装是一种信息隐蔽技术,使数据更加安全
>>> list1=[2,1,1,3,4]
>>> list1.sort()
>>> list1
[1, 1, 2, 3, 4]
>>> list1.append(9)
>>> list1
[1, 1, 2, 3, 4, 9]
python的列表实际上就是一个对象,提供了若干种方法供我们根据需求来调整整个列表,我们不知道列表这个对象的方法是如何实现的,也不知道列表对象里有哪些变量,这就是所谓的封装。我们只知道方法的名字,但具体如何实现并没有告诉我们,这就是封装。
2 继承
继承是子类自动共享父类之间数据和方法的机制
>>> class Mylist(list):#希望继承list列表
        pass # Pass是一个占位符,表示Mylist不做任何事情光继承list
>>> list2= Mylist()
>>> list2.append(5)
>>> list2.append(3)
>>> list2.append(7)
>>> list2.sort()
>>> list2
[3, 5, 7]
我们定义了Mylist这个类,它继承了属于list的属性和方法
3多态
不同对象对同一方法响应不同的行动
>>> class A:
        def fun(self):
                print("我是小A")

>>> class B:
        def fun(self):
                print("我是小B")

>>> a=A()
>>> b=B()
>>> a.fun()
我是小A
>>> b.fun()
我是小B
ab都调用相同的函数fun(),但结果不同,这就是多态

评分

参与人数 1鱼币 +2 收起 理由
小甲鱼 + 2

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 00:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表