关键词搜索

源码搜索 ×
×

Python学习:面向对象编程

发布2019-01-24浏览429次

详情内容

一、基础知识

  1. self
    同一个类可以生成无数个对象,当一个对象的方法被调用时,对象会将自身的引用作为第一个参数传给该方法,python便知道需要操作谁

    如果将类比作图纸,那么由类实例化后的对象为可以住的房子。根据一张图纸可以设计出成千上万的房子,但是每个房子都有自己的主人。这里的self 就相当于每个房子的门牌号,有了 self 就可以轻松知道自己的房子。

class Ball:
    def setName(self, name):
        self.name = name
    def kick(self):
        print('我叫 %s ,少林足球传承人' % self.name)

a = Ball()
a.setName('飞轮镖')
b = Ball()
b.setName('回旋镖')
a.kick()	#返回结果:我叫 飞轮镖 ,少林足球传承人
b.kick()	#返回结果:我叫 回旋镖 ,少林足球传承人
    1. “ _ _init _ _( )”
      __ init __()是Python里面的构造方法,只要实例化一个对象,这个方法就会在对象被创建时自动调用
    class Potato:
        def __init__(self, name):
            self.name = name
        def kick(self):
            print("我叫 %s ,蔬菜里的大头" % self.name)
    p = Potato('土豆')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 公有和私有

      对于Python,默认上对象的属性和方法都是公开的,可以直接通过操作符(.)进行访问

        class Person:
            name = '小明'
        p = Person()
        p.name
    
    • 1
    • 2
    • 3
    • 4

    为了实现类似私有变量的特征,Python内容采用了一种叫name mangling(名字改编)的技术, 在python中定义私有变量只需要在变量名或者函数名前加"__"两个下划线

    class Person:
        __name = "test"
        
    p = Person()
    p.__name
    #返回结果:
    Traceback (most recent call last):
      File "<input>", line 1, in <module>
    AttributeError: 'Person' object has no attribute '__name'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    此时要想实现访问只能从内部进行访问

    class Person:
        def __init__(self, name):
            self.__name = name
    
        def getName(self):
            return self.__name
    
    p = Person('小明')
    p.getName()	#返回结果:小明
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    python目前的私有机制都是伪机制,在外部可以通过“_类名__变量名”既可以访问双下横线开头的私有变量

    p._Person__name
    
    • 1

    二、补充

    关于面向设计,当考虑需要什么类以及类要有什么方法时,可以尝试下面的方法:
    (1)写下问题的描述(程序要做什么),把所有名词、动词和形容词加下划线
    (2)对于所有名词,用作可能的类
    (3)对于所有动词,用作可能的方法
    (4)对于所有形容词,用作可能的特性
    (5)把所有方法和特性分配到类

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载