python 类和方法(面向对象)
类和方法
name = "Jack"
city = "bejing"
print("my name is %S and come from %s "%(name,city))
print ("hello 51zxw") name = "harry"
city = "shengzhen"
print("my name is %S and come from %s "%(name,city))
print ("hello 51zxw") 思考几个问题?如果班上有50个同学依次上面形式介绍怎么办? 类与对象 人类
属性:地域、肤色、国家
功能: 走路、思考、饮食、跑
具体对象:中国人、非洲人
学生 属性:姓名、学号、城市、年龄
功能:听、读、写、说
具体对象:jack同学、harry同学
三大特殊:封装、继承、多态 定义一个学生的类
class Student(object):#括号不写默认也是object,可写可不写
def _init_(self,name,city): #构造函数
self.name = name #self相当于是是一个孩子,把名字绑定在这个孩子身上
self.city = city
print ("my name is %s and come from %s %(name,city)")
def talk(self):
print ("hello 51zxw")
生成实例对象
stu1 = Student("jack","beijing")#创建对象
stu1.talk() #对象调用方法
stu2 = Student("harry",shengzhen)
stu2.talk()
输出结果:
name is jack and come from beijing
hello 51zxw
例二:
class A():
def add(self,a,b):
return a+b count = A()
print (count.add(3,5))
输出结果:
8
例三
class A():
def _init_(self,a,b):
self.a = int(a)
self.b = int(b)
def add(self):
return self.a+self.b
count = A(3,4)
count.add()
输出结果:
7
"""解析:当调用A类时首先执行_init_方法,所以需要对其进行传参,初始化做的事就是将输入的类型化为整型,而add()可以直接拿初始化的self.a self.b进行计算,调用add()时不需要再进行传参"""
类的继承
class A():
def add(self,a,b):
return a+b class B(A):
def sub(self,a,b):
return a-b
print (B().add(3, 4)) #调用父类方法
输出结果:
7
print (B().sub(3, 4))#调用自己的方法
输出结果:
-1
先创建了A类,又创建了B类,B类继承了A类,所以B可以调用A类的方法
Super的用法
"""
在类的继承中,重定义某个方法,该方法会覆盖爷类同名的方法,但有时,我们希望能用爷类的功能
,需要调用爷类的方法,用Super来实现
"""
class A(object):
def __init__(self,name):
self.name = name
def greet(self):
print "hello ,I am %s"%self.name
class B(A):#继承A的方法
def greet(self):
super(B,self).greet()#与A类有同名方法时,又不希望覆盖A类方法使用Super
print "wangwang" dog = B("cat")
dog.greet()
输出结果:
hello ,I am cat
wangwang """
super是在子类中调用父类的初始化方法
""" class B1(object):
def _init_(self,a,b):
self.a = a
self.b = b class A1(B1): #继承父类
def __init__(self,a,b,c):
super(A1,self)._init_(a,b)#继承父类构造方法,又自己添加新方法,用supper
self.c = c
涉及到多重继承
class Base(object):
def __init__(self):
print "enter Base"
print "leave Base" class A(Base):
def __init__(self):
print "enter A"
super(A, self).__init__()
print "leave A" class B(Base):
def __init__(self):
print "enter B"
super(B,self).__init__()
print "leave B" class C(B,A,):
def __init__(self):
print "enter c"
super(C,self).__init__()
print "leave c" c1 = C()
"""
子类永远在父类的前面
如果有多个爷类,会根据它们在列表中的顺序执行 """
输出结果:
enter c
enter B
enter A
enter Base
leave Base
leave A
leave B
leave c
python 类和方法(面向对象)的更多相关文章
- python类及其方法
python类及其方法 一.介绍 在 Python 中,面向对象编程主要有两个主题,就是类和类实例类与实例:类与实例相互关联着:类是对象的定义,而实例是"真正的实物",它存放了类中 ...
- Python类,域,方法,对象,继承
类和对象: 是面向对象编程的两个主要方面,类创建一个新类型,而对象这个类的实例.. 域: 属于一个对象或类的变量被称为域.域有两种类型: 属于每个实例(类的对象)或属于类本身.它们分别被称为实例变量和 ...
- Python类基础知识(面向对象基础)
#首先 我们需要了解 面向过程是什么 面向对象是什么 我们为什么需要使用面向对象 面向过程:根据业务逻辑从上到下写垒代码 面向对象:根据代码对函数进行分类和封装 区别:解决问题的逻辑不同,但是都能解决 ...
- python中函数和方法区别,以及如何给python类动态绑定方法和属性(涉及types.MethodType()和__slots__)
网上有很多同义但不同方式的说法,下面的这个说法比较让你容易理解和接受 与类和实例无绑定关系的function都属于函数(function): 与类和实例有绑定关系的function都属于方法(meth ...
- Python 类中方法的内部变量,命名加'self.'变成 self.xxx 和不加直接 xxx 的区别
先看两个类的方法: >>> class nc(): def __init__(self): self.name ='tester' #name变量加self >>> ...
- 第8.7节 Python类__new__方法和构造方法关系深入剖析:__new__方法执行结果对__init__的影响案例详解
一. 引言 前面章节介绍了类中的构造方法和__new__方法,并分析了二者执行的先后顺序关系.__new__方法在__init__方法前执行,__new__方法执行后才返回实例对象,也就是说__new ...
- python - 类的方法
类的方法分为:普通方法. 静态方法和类方法 调用方式 特征 普通方法 由对象去调用执行,属于类 至少一个self,对象调用 静态方法 属于类,但通过类来调用,不依赖于任何对象,方法内部不需要对象封 ...
- Method Resolution Order – Python类的方法解析顺序
在支持多重继承的编程语言中,查找方法具体来自那个类时的基类搜索顺序通常被称为方法解析顺序(Method Resolution Order),简称MRO.(Python中查找其它属性也遵循同一规则.)对 ...
- python类中方法加单下划线、双下划线、前后双下滑线的区别
首先看一段代码: class Foo(): def __init__(self): print "__init__ method" def public_method(self): ...
随机推荐
- java开发两年,连这些多线程知识都还没掌握,你凭什么涨薪!
并发与并行 并发:两个或者多个事件在同一时间段发生(交替执行) 并行:两个或者多个事件在同一时刻发生(cpu多核.同时执行) 线程与进程 进程:是一个内存中运行的应用程序,有自己独立的内存空间,一个应 ...
- 苹果电脑下载电影教程:如何用folx下载《小妇人》
由西尔莎罗南.艾玛沃特森等知名影星重新演绎的<小妇人>又带动了新一轮的<小妇人>热潮.这部由露易莎创作的长篇小说,曾被多次拍摄,无论是小说本身,还是其影视资源,都能让观众回味无 ...
- Java蓝桥杯02——第二题集锦:生日蜡烛、星期一、方格计数、猴子分香蕉
第二题 生日蜡烛(结果填空) 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛. 现在算起来,他一共吹熄了236根蜡烛. 请问,他从多少岁开始过生日party的? 请填 ...
- 听说高手都用记事本写C语言代码?那你知道怎么编译运行吗?
坊间传闻高手都喜欢用记事本写代码,那么问题来了,我们以C语言为例,如何用记事本编译运行呢?其实最简单的方式就是安装GCC编译器,在记事本编写C语言程序,然后再在命令行用GCC编译运行,下面我简单介绍一 ...
- dubbo起停之配置注解
虽然说多种方式配置dubbo最后殊途同归实例化为dubbo的各配置对象,但是了解下注解的解析过程也能让我们清楚dubbo在spring bean的什么时候怎么样实例化一个代理对象,这点来说了解整个过程 ...
- fastjson JSONObject简单使用
工作中用的蛮多的最近整理下,概括地说 通过这个工具可以让一个json在json串,JSONObject,java对象之间进行转化 首先我们先写2个bean来构成一个比较复杂的json串: public ...
- 【mq读书笔记】消费进度管理
从前2节可以看到,一次消费后消息会从ProcessQueue处理队列中移除该批消息,返回ProcessQueue最小偏移量,并存入消息进度表中.那消息进度文件存储在哪合适呢? 广播模式:同一个消费组的 ...
- 浅谈Abp vNext的模块化设计
abp的模块化给我留下深刻的印象,模块化不是什么新概念,大家都习以为常,但是为什么要模块化,模块化的意义或者说目的是什么?也许我们思考得并不深入.难得的是abp不仅完美的阐述了模块化概念,而且把模块化 ...
- UML第二次作业(代码互评)
博客班级 https://edu.cnblogs.com/campus/fzzcxy/2018SE2/ 作业要求 https://edu.cnblogs.com/campus/fzzcxy/2018S ...
- 从docker介绍及其简介
一.引言 1.我本地代码运行没问题啊,但是别人机器运行不了,从而导致环境不一致的问题 2.那个兄弟又写死循环了,怎么这么卡,在多用户的操作系统下,会相互影响. 天猫双十一的情况下,用户量暴涨,从而导致 ...