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. STM32端口复用和映射

    STM32的功能引脚重映射和复用功能STM32中有很多内置外设的输入输出引脚都具有重映射(remap)的功能,本文对一些在使用引脚重映射时所遇到的有关问题加以说明.我们知道每个内置外设都有若干个输入输 ...

  2. 【工具使用】sublime text3

    import urllib.request,os,hashlib; h = 'df21e130d211cfc94d9b0905775a7c0f' + '1e3d39e33b79698005270310 ...

  3. 内存溢出VS内存泄漏

    内存溢出是指用户在对其数据缓冲区操作时,超过了其缓冲区的边界,尤其是对缓冲区进行写操作缓冲区的溢出很可能导致程序的异常. 内存泄露是指程序在运行过程中动态申请的内存空间不再使用后没有及时释放,从而很可 ...

  4. 关于GeoWebCache的部署说明

    最近因为工作需要学习了GeoWebCache,有了一些实战经验跟大家分享一下. 废话不多说,直接上问题! 1.切片的缓存问题 当地图服务(这里默认指WMS)的数据更新时,GeoWebCache的切片如 ...

  5. centos上如何安装redis?|centos傻瓜式安装redis教程

    本文介绍centos安装redis,请不要安装2.4.3,是有问题的. 首先安装gcc yum -y install gcc yum -y install gcc-c++ yum install ma ...

  6. 10月28日上午 PHP数据访问

    1.建一个连接(连接PHP和MYSQL) $db = new MySQLi("localhost","root","666","t ...

  7. C++变参数模板和...操作符

    https://en.wikipedia.org/wiki/Variadic_template https://msdn.microsoft.com/en-us/library/dn439779.as ...

  8. Redis学习笔记7--Redis管道(pipeline)

    redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常会阻塞并等待redis ...

  9. 统计SqlServer每张表内的数据量

    CREATE TABLE #temp (TableName VARCHAR (255), RowCnt INT)EXEC sp_MSforeachtable 'INSERT INTO #temp SE ...

  10. C语言基础(2)-常量

    常量就是在程序运行中不可变化的量. #define #define MAX 100 定义了一个常量名字叫MAX,值是100,用#define定义的常量一般用大写字母. #define是一个预编译指令, ...