16_python_面向对象
- class Car: # class是关键字,表示类
- def __init__(self, color, pai, pailiang): # self表示当前类的对象. 当前你创建 的是谁, 谁来访问的这个方法.那这个self就是谁.
- self.color = color
- self.pai = pai
- self.pailiang = pailiang
- def run(self, speed):
- print("车可以跑%s迈" % speed)
- c = Car("red", "京A66666", "2.0T") # 创建对象,类名称后加括号即可,即为实例化
- c.run(100) # 这时. python会自动把对象c传递给run方法的第一个参数位置.
- class 类名:
- def __init__(self,参数1,参数2):
- self.对象的属性1 = 参数1
- self.对象的属性2 = 参数2
- def 方法名(self):pass
- def 方法名2(self):pass
- 对象名 = 类名(1,2) #对象就是实例,代表一个具体的东西
- #类名() : 类名+括号就是实例化一个类,相当于调用了__init__方法
- #括号里传参数,参数不需要传self,其他与init中的形参一一对应
- #结果返回一个对象
- 对象名.对象的属性1 #查看对象的属性,直接用 对象名.属性名 即可
- 对象名.方法名() #调用类中的方法,直接用 对象名.方法名() 即可
- class DerivedClassName(BaseClassName1):
- <statement-1>
- . . .
- <statement-N>
需要注意圆括号中基类的顺序,若是基类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找基类中是否包含方法
- #类定义
- class people:
- #定义基本属性
- name = ''
- age = 0
- #定义私有属性,私有属性在类外部无法直接进行访问
- __weight = 0
- #定义构造方法
- def __init__(self,n,a,w):
- self.name = n
- self.age = a
- self.__weight = w
- def speak(self):
- print("%s 说: 我 %d 岁。" %(self.name,self.age))
- #单继承示例
- class student(people):
- grade = ''
- def __init__(self,n,a,w,g):
- #调用父类的构函
- people.__init__(self,n,a,w)
- self.grade = g
- #覆写父类的方法
- def speak(self):
- print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))
- s = student('ken',10,60,3)
- s.speak()
- 结果:
- ken 说: 我 10 岁了,我在读 3 年级
(2) 多继承
- class DerivedClassName(Base1, Base2, Base3):
- <statement-1>
- . . .
- <statement-N>
需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。(MRO算法)
- #类定义
- class people:
- #定义基本属性
- name = ''
- age = 0
- #定义私有属性,私有属性在类外部无法直接进行访问
- __weight = 0
- #定义构造方法
- def __init__(self,n,a,w):
- self.name = n
- self.age = a
- self.__weight = w
- def speak(self):
- print("%s 说: 我 %d 岁。" %(self.name,self.age))
- #单继承示例
- class student(people):
- grade = ''
- def __init__(self,n,a,w,g):
- #调用父类的构函
- people.__init__(self,n,a,w)
- self.grade = g
- #覆写父类的方法
- def speak(self):
- print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))
- #另一个类,多重继承之前的准备
- class speaker():
- topic = ''
- name = ''
- def __init__(self,n,t):
- self.name = n
- self.topic = t
- def speak(self):
- print("我叫 %s,我是一个演说家,我演讲的主题是 %s"%(self.name,self.topic))
- #多重继承
- class sample(speaker,student):
- a =''
- def __init__(self,n,a,w,g,t):
- student.__init__(self,n,a,w,g)
- speaker.__init__(self,n,t)
- test = sample("Tim",25,80,4,"Python")
- test.speak() #方法名同,默认调用的是在括号中排前地父类的方法
- 结果:
- 我叫 Tim,我是一个演说家,我演讲的主题是 Python
- class Parent: # 定义父类
- def myMethod(self):
- print ('调用父类方法')
- class Child(Parent): # 定义子类
- def myMethod(self):
- print ('调用子类方法')
- c = Child() # 子类实例
- c.myMethod() # 子类调用重写方法
- super(Child,c).myMethod() #用子类对象调用父类已被覆盖的方法
- class Animal:
- def chi(self):
- print("动物就知道吃")
- class Pig(Animal):
- def chi(self):
- print("猪在吃")
- class Haski(Animal):
- def chi(self):
- print("哈?士奇在吃")
- class Alasika(Animal):
- def chi(self):
- print("阿拉斯加在吃")
- class SiYangYuan:
- def yanng_animal(self, ani):
- ani.chi()
- zhu = Pig()
- erha = Haski()
- ala = Alasika()
- alex = SiYangYuan()
- alex.yanng_animal(zhu)
- alex.yanng_animal(erha)
- alex.yanng_animal(ala)
- 一:我们定义的类的属性到底存到哪里了?有两种方式查看
- dir(类名):查出的是一个名字列表
- 类名.__dict__:查出的是一个字典,key为属性名,value为属性值
- 二:特殊的类属性
- 类名.__name__# 类的名字(字符串)
- 类名.__doc__# 类的文档字符串
- 类名.__base__# 类的第一个父类(在讲继承时会讲)
- 类名.__bases__# 类所有父类构成的元组(在讲继承时会讲)
- 类名.__dict__# 类的字典属性
- 类名.__module__# 类定义所在的模块
- 类名.__class__# 实例对应的类(仅新式类中)
16_python_面向对象的更多相关文章
- angular2系列教程(六)两种pipe:函数式编程与面向对象编程
今天,我们要讲的是angualr2的pipe这个知识点. 例子
- 一起学 Java(二)面向对象
一.方法函数 函数也称为方法,就是定义在类中的具有特定功能的一段独立代码.用于定义功能,提高代码的复用性. 函数的特点1> 定义函数可以将功能代码进行封装,便于对该功能进行复用:2> 函数 ...
- js面向对象学习 - 对象概念及创建对象
原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...
- 前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型
前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型 前言(题外话): 有人说拖延症是一个绝症,哎呀治不好了.先不说这是一个每个人都多多少少会有的,也不管它究竟对生活有多么大的 ...
- .NET 基础 一步步 一幕幕[面向对象之对象和类]
对象和类 本篇正式进入面向对象的知识点简述: 何为对象,佛曰:一花一世界,一木一浮生,一草一天堂,一叶一如来,一砂一极乐,一方一净土,一笑一尘缘,一念一清静.可见"万物皆对象". ...
- 简单分析JavaScript中的面向对象
初学JavaScript的时候有人会认为JavaScript不是一门面向对象的语言,因为JS是没有类的概念的,但是这并不代表JavaScript没有对象的存在,而且JavaScript也提供了其它的方 ...
- Java程序员应该了解的10个面向对象设计原则
面向对象设计原则: 是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorat ...
- JavaScript学习笔记(三)——this、原型、javascript面向对象
一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...
- 带你一分钟理解闭包--js面向对象编程
上一篇<简单粗暴地理解js原型链--js面向对象编程>没想到能攒到这么多赞,实属意外.分享是个好事情,尤其是分享自己的学习感悟.所以网上关于原型链.闭包.作用域等文章多如牛毛,很多文章写得 ...
随机推荐
- 【搜索】 Find The Multiple
#include<stdio.h> #include<stdlib.h> #include<string.h> bool found; void DFS(unsig ...
- js中实现 复制到剪切板 功能
一:引包 <script type="text/javascript" src="jquery.js"></script> <sc ...
- JS基础-数据类型-运算符和表达式-变量和常量
1.js的基础语法2.js调试 1.F12调出控制台,查看提示错误及其位置. 2.出错时只影响当前代码块,不会影响其他代码块,后续代码块继续执行.3.语法规范 1.js语句:可执行的最小单元 必须以 ...
- 2018.11.09 bzoj1706: relays 奶牛接力跑(倍增+floyd)
传送门 倍增+floyd板子题. 先列出状态fi,j,kf_{i,j,k}fi,j,k表示经过iii条边从jjj到kkk的最短路. 然后发现可以用fi−1,j,kf_{i-1,j,k}fi−1,j, ...
- 1.2OpenCV如何扫描图像,利用查找表和计时
查找表 颜色缩减法:如果矩阵元素存储的是单通道像素,使用C或C++的无符号字符类型,那么像素可有256个不同值. 但若是三通道图像,这种存储格式的颜色数就太多了(确切地说,有一千六百多万种).用如此之 ...
- boost-容器
1.array array相当于是一个增加了STL容器接口的数组,但它不像vector等容器一样可以动态增长,如果需要动态变动array的容量可以使用boost::scoped_array.array ...
- jquery删除onclick属性和设置onclick属性--获取验证码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- R语言的文件写入
R语言的文件写入 官方文档介绍如下: write.table(x, file = "", append = FALSE, quote = TRUE, sep = " &q ...
- 传输层TCP
/*************************************************************************************************** ...
- android:padding和android:margin的区别[转]
本文综合了:http://zhujiao.iteye.com/blog/1856980 和 http://blog.csdn.net/maikol/article/details/6048647 两篇 ...