python面向对象小tips

(一)、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

时间: 2024-10-11 06:58:29

python面向对象小tips的相关文章

学习Python的一些Tips

0. Python安装 官网提供多种方式,一般Windows下直接安装exe即可:Linux下基本上自带python:另外也提供源码,也可自行编译: 若安装后无法使用,则检查一下环境变量是否设置正确. 额外:除了最主要的官网资料.文档外,Python的wiki也提供了很多有用的信息 1. Python相关源码 0) 标准库 1) PyPi包索引(可通过pip工具安装) 2) GitHub上的Python项目 3) Code activestate上面的Python代码片段 2. Python安装

Python面向对象-day07

写在前面 上课第七天,打卡: 时间的高效利用: 前言: 今天egon老师补充了下 is 和 == 的区别,整理如下:Python中变量的属性以及判断方法 一.面向过程和面向对象 - 1.面向过程 核心是过程,过程就是解决问题的步骤:流水线.机械式: 优点:复杂的问题简单化,分成多个功能单元: 缺点:可扩展性差 应用:Linux内核.httpd.git - 2.面向对象 核心是对象: 要理解对象,应该把自己当做上帝,在上帝眼里一切存在的事物都是对象,不存在的也可以创建出来: 对象是 特征(变量)和

python 面向对象初级篇

Python 面向对象(初级篇) 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强-" 面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,即:将之前实现的代码块复制到现需功能处. Python while True: if cpu利用率 > 90%: #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 if 硬盘

Python面向对象(三)

一.绑定方法与非绑定方法 一.绑定方法:绑定给谁就应该由谁来调用,谁来调用就会将谁当作第一个参数传入 1.绑定给对象的方法:类中定义的函数默认就是绑定给对象的 2.绑定给类的方法:为类中定义的函数加上一个装饰器@classmethod 二.非绑定方法:既不与类绑定,又不与对象绑定,意味着对象和类都可以来调用,无论谁来调用都是一个普通的函数,普通函数没有自动传值的效果 案例如下: class Foo: def f1(self): print(self) @classmethod def f2(cl

Python面向对象 --- 新旧式类、私有方法、类属性和类方法、静态方法

一.Python面向对象中的新旧式类 1)新式类(推荐使用):在定义类时,类后边括号里要继承基类(object).在python3.x中若没有指定父类,会默认使用的是object作为基类:在python2.x中,若没指定父类,则不会以object作为基类. 2)旧式类(经典类):在定义类时,类后边括号中不用继承object类,甚至不用括号. 3)dir方法是用来查看类的内置方法. 二.私有方法和属性 1)私有属性是对象不希望公开的属性:私有方法是对象不希望公开的方法.在定义私有属性和方法时,在属

Python面向对象之:三大特性:继承,封装,多态。

前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到?个对象中. 把固定功能的代码封装到?个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分析. 比如. 你写了?个很?B的函数. 那这个也可以被称为封装. 在?向对象思想中. 是把?些看似?关紧要的内容组合到?起统?进?存储和使?. 这就是封装. 2. 继承: ?类可以?动拥有?类中除了私有属性外的其他所有内容. 说?了, ??可以随便?爹的东?. 但是朋友们, ?定要认清楚?个

Python面向对象02/类的空间问题

Python面向对象02/类的空间问题 内容大纲 1.从空间角度研究类 2..类与类之间的关系 1.类的空间问题 1.1何处可以添加对象属性 在类的__init__可以添加,在类的方法也可以添加,在类的外部也可以添加 # class Human: # # mind = '有思想的' # # def __init__(self, name, age): # self.name = name # self.age = age # # def eat(self,argv): # # self.hobb

Python面向对象编程——简介

Python面向对象编程--简介 编程范式 编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程 . 一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多种不同的方式, 对这些不同的编程方式的特点进行归纳总结得出来的编程方式类别,即为编程范式. 不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路, 大多数语言只支持一种编程范式,当然也有些语言可以同时支持多种编程范式. 两种最重要的编程范式分别是面向

python面向对象程序设计(类成员)第二节

python 面向对象程序设计(类成员) 目录: (1)        类成员和实例成员 (2)        公有成员和私有成员 (3)        方法 (一)类成员与实例成员: 实例属性属于实例(对象),只能通过对象名访问. 类属性属于类,类名或对象名都可以访问,属于类的数据成员是在类中所有方法之外定义的. class Car:     price = 1000   #类属性     def __init__(self,c):         self.color = c car1 =