码迷,mamicode.com
首页 > 编程语言 > 详细

python面向对象小tips

时间:2017-01-22 17:58:28      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:动态语言   变量   ima   无法   run   访问权限   tips   private   调用   

(一)、python鸭子类型

  python作为动态语言继承和多态与静态语言(像java)有很大的不同;比如说在java中的某个方法,如果传入的参数是Animal类型,那么传入的对象必须是Animal类型或者其子类,否则,将无法调用run()方法。对于Python来说,则不一定需要传入Animal类型。我们只需要保证传入的对象有一个run()方法就可以了,这就是动态语言中的“鸭子类型”,不强调严格的继承,只需要“看起来像鸭子就行了,即使你是一只天鹅”,

所以说你的对象只要有那个方法即可,这也是python面向过程或者说面向函数在对象中的体现所在!

# coding=utf-8
class Animal(object):
    def run(self):
        print(看,有只动物在跑)

class Dog(Animal):

    def run(self):
        print(看,是只狗在跑)
    def eat(self):
        print(那狗在吃东西)

class Car(object):
    def run(self):
        print(车启动了。。。)

def gogogo(animal):
    animal.run()
    # animal.eat()

gogogo(Dog())

print("--测试鸭子类型--")
gogogo(Car())

 (二)、python中的访问权限 

1).在Python中,变量名以双下划线开头(__xxx__),并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是private变量,不要将对象的属性名弄成 __xxx__ 这种格式;
2).以 _xx开头的实例变量是可以访问的,但是这只是告诉我们,它是可以被访问的,但是要看作私有变量,不要随意访问;
3).实例的变量名如果以__xx开头,这就成了一个私有变量(private),只有内部可以访问,“外部不能直接访问”,不能直接访问__xx是因为Python解释器对外把__xx变量改成了_object__xx(这个很重要,可以帮助理解很多问题),所以,仍然可以通过_object__xx来访问__xx变量。

 

 (三)、待定ing

python面向对象小tips

标签:动态语言   变量   ima   无法   run   访问权限   tips   private   调用   

原文地址:http://www.cnblogs.com/leixingzhi7/p/6340877.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!