1.#类
#类就是一个模板,模板里可以包含多个函数,函数里实现一些功能
#定义一个类
class bar:
def foo(self,agr):
print(self,agr)
obj = bar()
print(obj)
print(obj.foo("调用类的方法"))
2.#方法
#把函数写在类里就是方法
#构造方法
#普通方法
class person:
def __init__(self,name,age):
#构造方法的特性,调用 类名() 后,自动执行构造方法
#self 谁调用类,谁就是self
self.n = name
self.a = age
self.xue = 0
def show(self): #普通方法
print("%s--%s"%(self.n,self.a))
obj = person("haha",20) obj.show()
3.#面向对象三大特性之一:封装
class bar:
def __init__(self,n,a):
self.name = n
self.age = a
self.xun = 0
b1 = bar("zhangw",11)
b2 = bar("haha",31)
4.#面向对象三大特性之二:继承
#self永远是执行该方法的调用者
#继承
class 父类:
pass
class 子类(父类):
pass
#子类可以调用父类的方法
#如果子类中有和父类一样的方法名,则优先调用自己的,也就是重写
#重写,防止执行父类的方法
#重写后,如果想要执行父类的方法
1.#super(子类,self).父类中的方法()
2.#父类名,父类中的方法(self,...) #python中支持多继承
#原则
#1.左侧优先,这里的左侧指的是调用的时候,比如:class zilei(fulei1,fulei2),fulei1 优先
#2.左侧找完再找右侧
#3。如果左右两侧最后汇聚到同一个根,则最后找根 5.#面向对象三大特性之三:多态
#原生多态,“鸭子类型”
#当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子
class F1:
pass
class S1(F1):
def show(self):
print(S1.show)
class S2(F1):
def show(self):
print(S2.show)
def Func(obj):
print(obj.show())
s1_obj = S1()
Func(s1_obj)
s2_obj = S2()
Func(s2_obj) 6.#类成员
#字段
#普通字段,保存在对象中,只能通过对象访问
#静态字段,保存在类中,可以用个类,或者对象访问
#方法
#普通方法,保存在类中,由对象直接调用,self = > 对象
#静态方法,保存在类中,由类直接调用
#类方法,保存在类中,由类直接调用cls = >当前类
class province:
country = "中国"
def __init__(self,name):
self.name = name
@staticmethod #静态方法
def jingtai():
print("我是静态方法,不需要对象")
@classmethod #类方法
def classmd(cls):
print(cls)
print("haha")
print(province.country)
hebei = province("河北")
print(hebei.name) province.jingtai()
province.classmd() #属性,特性
#@property
# 由属性的定义和调用要注意一下几点:
# 定义时,在普通方法的基础上添加 @property 装饰器;
# 定义时,属性仅有一个self参数
# 调用时,无需括号
# 方法:foo_obj.func()
#属性:foo_obj.prop
# ############### 定义属性 ###############
class Goods(object):
@property
def price(self):
print(property)
@price.setter
def price(self, val):
print(val)
@price.deleter
def price(self):
print(666)
# ############### 调用 ###############
#obj = Goods()
#obj.price # 自动执行 @property 修饰的 price 方法,并获取方法的返回值
#obj.price = 123 # 自动执行 @price.setter 修饰的 price 方法,并将 123 赋值给方法的参数
#del obj.price # 自动执行 @price.deleter 修饰的 price 方法

[python面向对象]--基础篇的更多相关文章

  1. 十六、python面向对象基础篇

    面向对象基础: 在了解面向对象之前,先了解下变成范式: 编程范式是一类典型的编程风格,是一种方法学 编程范式决定了程序员对程序执行的看法 oop中,程序是一系列对象的相互作用 python支持多种编程 ...

  2. Python开发【第七篇】:面向对象 和 python面向对象进阶篇(下)

    Python开发[第七篇]:面向对象   详见:<Python之路[第五篇]:面向对象及相关> python 面向对象(进阶篇)   上一篇<Python 面向对象(初级篇)> ...

  3. Python 面向对象 (进阶篇)

    <Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可 ...

  4. python 面向对象初级篇

    Python 面向对象(初级篇) 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发" ...

  5. Python 面向对象 基础

    编程范式概述:面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 ...

  6. python面向对象基础

    面向对象基础 1. 简述 编程方式: 面向过程: 根据代码在脚本的堆叠顺序,从上到下依次执行 函数式编程:将相同功能的代码封装到函数中,直接调用即可,减少代码重复性 面向对象:对函数进行分类和封装,将 ...

  7. Python 面向对象基础知识

    面向对象基础知识 1.什么是面向对象编程? - 以前使用函数 - 类 + 对象 2.什么是类什么是对象,又有什么关系? class 类: def 函数1(): pass def 函数2(): pass ...

  8. python 面向对象基础和高级复习

    面向对象基础 面向对象编程 面向过程编程:类似于工厂的流水线 优点:逻辑清晰 缺点:扩展性差 面向对象编程:核心是对象二字,对象属性和方法的集合体,面向对象编程就是一堆对象交互 优点:扩展性强 缺点: ...

  9. 1.Python面向对象基础

    面向对象(OOP) 面向对象编程--object oriented programming 简写 OOP   面向过程和面向对象的区别: 面向过程: 1.把完成某一个需求的所有步骤从头到尾逐步实现 2 ...

随机推荐

  1. C/C++实践笔记 007

    进制输出自己写一个_itoa 进制转换void main(){ int num = 0; scanf("%d", &num); printf("num=%i&qu ...

  2. C# double 四舍五入

    public static double Round(object data) { if (data == null || data == System.DBNull.Value) { return ...

  3. HtmlUnit初探

    HtmlUnit是一个用java实现的浏览器,是一个无界面的浏览器(headless browser),跟phatomJS好像是同一类事物. HtmlUnit基于apache httpClient,而 ...

  4. jQuery1.9之后使用on()绑定 动态生成元素的 事件无效

    来自互联网: 需要绑定a的父级元素(此元素必须为静态元素,不是后来动态生成的),然后设定on()方法的selector参数才行: $('p').on('mouseenter', 'a', functi ...

  5. js打开新页面与关闭当前页面

    打开新的窗口window.open("help.html"); window.open("help.html"); 关闭页面<a href="j ...

  6. python 小练手

    监控 主动监控 - 服务器端轮询客户端 被动监控-客户端agent上报到服务器端 混合模式---两种都支持 需求 1个性化的监控需求 2每个服务的监控间隔不同 3混合模式的监控

  7. js ie中实现拖拽

    获取鼠标移动信息 开始我们需要获取鼠标的坐标.我们添加一个document.onmousemove 就可以达到此目的: Javascript:   document.onmousemove = mou ...

  8. fedora22切换用户windows分区不能自动挂载

    新建立一个用户后,然后登陆后,再次登出,登陆原来的账户windows分区不能自动挂载

  9. 页面(html,css,js)上传到服务器后乱码

    http://blog.csdn.net/u011606714/article/details/44649159 将文件使用记事本保存成ANSI格式或者UTF格式(根据需要)即可. 设置格式: htm ...

  10. jquery 幻灯片 左右滚动

    使用jquery封装的一个幻灯片插件 写的好差  参考了别人写的 后面再重构 现在这个应该可以直接用了 主要实现思路就是 添加当前选中状态 index相对应的 选中的图总是在第一位(也就是加选中状态的 ...