鱼C论坛

 找回密码
 立即注册
查看: 1652|回复: 1

[技术交流] 《零基础入门学习Python》第二十一讲笔记--类和对象1

[复制链接]
发表于 2017-9-20 14:32:56 | 显示全部楼层 |阅读模式

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

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

x
类和对象1

类:属性 + 方法
创建类的方法: class  Xxx:        #python中类名是以大写字母开头
        例:class Turtle:
                             #属性
                            color = 'red'
                            weight = 10
                          legs = 4

                           #方法
                            def climb(self):
                                      print('正在爬...')

                         def run(self):
                                print('正在跑...')

                            def bite(self):
                                print('咬!!')
实例化对象: test = Turtle()
调用方法:test.climb()、test.run()


面向对象的特征:封装、继承、多态

继承:一个新类获得被继承的类的属性和方法
     使用方法:class  Mylist(list):
                                执行代码

多态:不同对象对同一方法响应不同的行动                  
       例: class  Test1:
                          def  a(self):
                                   print('我是test1')
               class  Test2:
                          def  a(self):
                                   print('我是test2')
       实例化:test1=Test1()
                     test2=Test2()
       调用方法:test1.a()
              输出:我是test1
       调用方法:test2.a()
              输出:我是test2
不同的对象调用相同的方法返回不一样的结果

self:类似于java、C++中的 this,实例化对象是,相当于是实例化的名
        例:class  Test1:
                          def  a(self):
                                   print('我是test1')
        实例化:test1 = Test1()
其中test1相当于是self

魔法方法__init__(self, param1, param2):初始化对象属性,在实例化时便可以设置属性的值,而无需通过调用方法来赋予对象数据
        例1:class  Ball:
                        def setName(self, name):
                                        self.name = name
                        def kick(self):
                                        print('我是%s,谁踢我!' % self.name)
        实例化:a = Ball()
                      a.setName('足球')
                      a.kick()
        返回:我是足球,谁踢我!

        例2:class  Ball:
                        def __init__(self, name):
                                        self.name = name
                        def kick(self):
                                        print('我是%s,谁踢我!' % self.name)
        实例化:a = Ball('足球')
                      a.kick()
        返回:我是足球,谁踢我!
例1中需要调用setName方法才能赋值,例2中在实例化对象时即赋值了,但是如果在实例化时未赋值便会报错

共有和私有

共有即实例化对象后可以直接调用获得参数值
私有是实例化对象后无法通过直接调用获得参数值,需要通过对象内部的方法来获得
          实现方法:在变量名或函数名前加两个下划线'_'
       例1:class  Person:
                        name = '张三'
        实例化:p = Person()
                      p.name
        返回: 张三
        
        例2:class Person:
                        __name = '张三'
        实例化:p = Person()
                      p.__name
        报错:没有__name这个参数名

        例3:class Person:
                        __name = '张三'
                        def getName(self):
                                return self.__name
        实例化:p = Person()
                      p.getName()
        返回:张三

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2017-9-21 18:28:06 | 显示全部楼层
学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 19:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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