python面向对象--类

1、类的概念:简单来说就是一组符合逻辑的参数或者是函数,一个种类、一个模型。

一个类中可以包含任意参数,并且可以定义任意个方法,但类并不是随意的将多个参数或者方法包含在class下,而是创建一个在事物之间具有逻辑链接的对象。

在python中class关键字定义一个类,在class中有def定义的函数,也就是类的方法。

2. 实例、实例化、对象

    实例或叫对象:        根据模型制作出来的东西。          写法: 对象名/实例名 = 类名(参数-如果有)    实例化:        就是做东西的这个过程。

3.方法:类里面的函数   写法:         def 方法名(self,参数-如果有):        pass

4. 属性:类里面的变量5. 构造函数:类在实例化的时候会自动执行的一个函数   写法:       def __init__(self,参数-如果有):        pass
6. 析构函数:实例在销毁的时候自动执行的函数  写法:    def __del__(self,参数-如果有):        pass
7. self:代表的本类对象。
例1:
#以下3种定义类的方式在python3中没有区别,可任意使用

class My:  #经典类
    pass

class My2(object):  #新式类
    pass

class My3(): #新式类
    pass

country = ‘China‘ #全局变量

class Person:
    def __init__(self,name): #构造函数 __init__
        print(‘开始了‘,name)
        self.name = name  # 实例变量
        self.age = 18
        # 人的名字是 xxx
        self.data = ‘哈哈哈‘
        self.addr = ‘北京‘

    def cry(self,size): #cry是方法,size是属性
        print(‘%s在%s哭。年龄是%s‘%(self.name,size,self.age))
        self.size = ‘大哭‘
        self.date = ‘20190106‘

    def say(self):
        print(‘我叫%s,我住在%s.‘%(self.name,self.addr))
        print(self.size)
        print(‘今天的日期‘,self.date)
        self.help()

    def help(self):
        print(self.date)

mcb = Person(‘Jack‘) #这里的“赋值”就是在实例化
cq = Person(‘Alice‘) #mcb和cq就是实例或者称作对象

mcb.grilfriend = cq 

print(‘Jack的女朋友‘,mcb.grilfriend.name)
mcb.grilfriend.cry(‘大‘)
#以上输出结果如下:

开始了 Jack
开始了 Alice
Jack的女朋友 Alice
Alice在大哭。年龄是18

例2:

import pymysql
class MyDb:
    def __init__(self,host,user,password,db,port=3306,charset=‘utf8‘):#构造函数,
        print(‘连接数据库‘)
        self.conn = pymysql.connect(host=host,user=user,password=password,
                        db=db,port=port,charset=charset)
        self.cur = self.conn.cursor()

    def execute_one(self,sql):
        print(‘返回单条数据‘)
        self.cur.execute(sql)
        res = self.cur.fetchone()
        return res

    def execute_many(self,sql):
        print(‘返回多条数据的‘)
        self.cur.execute(sql)
        res = self.cur.fetchall()
        return res

    def __del__(self):#析构函数
        print(‘关闭数据库连接‘)
        self.cur.close()
        self.conn.close()

my = MyDb(‘100.10.1.10‘,‘name‘,‘pwd‘,‘dbname‘) #实例化

#一个变量前面加了self之后,那么在这个类里面的其他的函数都可以用了。

res = my.execute_one(‘select * from app_myuser where username="testuser1";‘)
print(res)

res2 = my.execute_many(‘select * from app_myuser limit 10;‘)
print(res2)

#以上输出结果如下
连接数据库
返回单条数据
(34847, ‘TESTUSER1‘, ‘96e79218965eb72c92a549dd5a330112‘, 1)
返回多条数据的
((1122, ‘liuyana03‘, ‘123658‘, 1), (1123, ‘wpp‘, ‘1234567‘, 1), (1128, ‘wangcan‘, ‘hhhh‘, 1), (1129, ‘wangcan1‘, ‘hhhh‘, 1), (1185, ‘wangliwen‘, ‘123456‘, 1), (1186, ‘wangzhihua‘, ‘123456‘, 1), (1187, ‘zyb123‘, ‘456789‘, 1), (1188, ‘nhy1233‘, ‘456789‘, 1), (1190, ‘aaaa‘, ‘1234566‘, 1), (1191, ‘zzf‘, ‘123456‘, 1))
关闭数据库连接

8. 类变量:就在直接在类下面定义的变量,没有加self的,每个实例都可以用

  写法:

  class 类名:      类变量名 = 值    def __init__(self,参数名-如果有):        pass

9. 类方法:

    1、不需要实例化就可以调用    2、它可以使用类变量    3、可调用其他的类方法。    4、它不可以使用实例方法、实例变量    如果类里面的这个方法,它并没有使用到其他的实例变量、或者其他实例方法,那么就给他定义成类方法写法:
   @classmethod    def 方法名(cls): #一般默认写cls,跟方法里的self意思差不多      pass
10. 静态方法:    1、不需要实例化就可以调用的    2、它就是一个定义在类里面的普通函数,不能使用实例变量、实例方法、不能使用类变量、类方法。写法:
  @staticmethod  def 方法名():     pass
11. 属性方法:    看起来像变量的一个方法。写法:
  @property  def 方法名(self):      pass
12. 实例变量:    写法: self.xxx = xxx    加了self的变量才是实例变量,必须得实例化之后才可以使用

13. 实例方法:    需要传self的方法,都是实例方法,必须得实例化之后才可以使用    实例方法里面可以随便通过self来调用实例方法,类方法,静态方法,类变量。

class Car:
    wheel = 4 #类变量
    def __init__(self,color,p):
        self.color = color #实例变量
        self.p = p

    def help(self): #实例方法
        print(‘汽车有%s个轮子‘%self.wheel)
        print(‘汽车的颜色是%s‘%self.color)
        print(‘牌子%s‘%self.p)
        print(‘=‘*10)
        self.haha() #调用其他方法
        self.check_wheel()

    @classmethod #类方法
    def check_wheel(cls):
        print(‘cls的内存地址‘,id(cls))
        print(cls.wheel) #类方法可以使用类变量
        cls.haha() #类方法可以调用其他方法

    @classmethod #类方法
    def haha(cls):
        print(‘哈哈哈‘)
        cls.help2() #类方法可调用其他的类方法

    @staticmethod #静态方法
    def help2():
        print(‘这个类的作用是造汽车,它里面有xxx方法‘)

    @property #属性方法
    def yesterday(self):
        import datetime
        res = datetime.date.today()  + datetime.timedelta(-1)
        return str(res)

    def tomorrow(self): #实例方法
        import datetime
        res = datetime.date.today()  + datetime.timedelta(1)
        return str(res)

Car.help2()  #静态方法的调用不需要实例化
#上一行代码输出:这个类的作用是造汽车,它里面有xxx方法

mcb = Car(‘赤橙黄绿青蓝紫‘,‘Jack‘)
print(mcb.yesterday) #属性方法的调用,对象名(yesterday)后不需要加括号
#上一行代码输出:2019-01-10

print(mcb.tomorrow()) # 输出:2019-01-12

mcb.wheel = 28
mcb.haha()
#上一行代码输出:
# 哈哈哈
# 这个类的作用是造汽车,它里面有xxx方法

mcb.help()
mcb.help2()

print(‘Car的内存地址‘,id(Car)) #输出:Car的内存地址 38354920

Car.check_wheel() #类方法不需要实例化就可以调用

Car.wheel= 19
print(Car.wheel) #输出:19

#以上代码输出:
这个类的作用是造汽车,它里面有xxx方法
2019-01-10
2019-01-12
哈哈哈
这个类的作用是造汽车,它里面有xxx方法
汽车有28个轮子
汽车的颜色是赤橙黄绿青蓝紫
牌子Jack
==========
哈哈哈
这个类的作用是造汽车,它里面有xxx方法
cls的内存地址 36782056
4
哈哈哈
这个类的作用是造汽车,它里面有xxx方法
这个类的作用是造汽车,它里面有xxx方法
Car的内存地址 36782056
cls的内存地址 36782056
4
哈哈哈
这个类的作用是造汽车,它里面有xxx方法
19
汽车有19个轮子
汽车的颜色是黑色
牌子奔驰
==========
哈哈哈
这个类的作用是造汽车,它里面有xxx方法
cls的内存地址 36782056
19
哈哈哈
这个类的作用是造汽车,它里面有xxx方法

原文地址:https://www.cnblogs.com/denise1108/p/10257396.html

时间: 01-11

python面向对象--类的相关文章

python面向对象——类和对象

一.三大编程范式 编程范式即编程的方法论,标识一种编程风格 三大编程范式: 1.面向过程编程(流水线式) 优点:极大的降低了程序的复杂度 缺点:应用场景固定住了,可扩展性差 2.函数式编程 特点: a.不修改外部传来值的状态 b.精简,可读性差 c.模仿数学里的函数 3.面向对象编程(是用来解决程序的可扩展性的) 优点:解决了程序的可扩展性 缺点:可控性差 二.面向对象设计与面向对象编程 1.面向对象设计 面向对象设计(Object oriented design):将一类具体事物的数据和动作整

Python面向对象-类成员

类的成员可以分为三大类:字段.方法和属性: 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有多少个普通字段.而其他的成员,则都是保存在类中,即:无论对象的多少,在内存中只创建一份. (一)字段 字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同 1 class Province: 2 # 静态字段 3 country = "China" 4 5 def __init__(self, name): 6 #

Python 面向对象class(2)

Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程. 接下来我们先来简单的了解下面向对象的一些基本特征. 面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定

python面向对象进阶

isinstance(obj,cls)检查是否obj是否是类 cls 的对象. isinstance(obj,cls)检查是否obj是否是类 cls 的对象. 反射 python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 四个可以实现自省的函数(参数是对象,字符串格式的属性名) hasattr getattr setattr delattr __del__,就是析构方法,当对象在内存中被释放时,自动触发执行. 注:此方法一般无须定义,

Python面向对象(2)

1.除了封装,Python面向对象还有继承这一功能,如下代码,这是简单的继承功能. class Animal: def chi(self): print(self.name+' 吃') def he(self): print(self.name + ' 喝') class Cat: def __init__(self, name): self.name = name def jiao(self): print('瞄') class Dog(Animal):#继承Animal这个父类,拥有父类的方

python 面向对象(进阶篇)

上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数 面向对象三大特性:封装.继承和多态 本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象

python——面向对象基础

概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强..." 面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,即:将之前实现的代码块复制到现需功能处. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 while True:     if cpu利用率 > 90%:     

python Class(类) and Object Oriented(面向)

Python类与面向对象    程序=指令+数据 (或算法+数据结构).代码可以选择以指令为核心或以数据为核心进行编写.    两种范型        (1)以指令为核心:围绕"正在发生什么"进行编写(面向过程编程:程序具有一系列线性步骤:主体思想是代码作用于数据)以指令为中心,程序员的主要工作在于设计算法.        (2)以数据为核心:围绕"将影响谁"进行编写(面向对象编程<oop>:围绕数据及为数据严格定义的接口来组织程序,用数据控制对代码的访

Python面向对象-day07

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

Python学习(24):Python面向对象(2)

转自 http://www.cnblogs.com/BeginMan/p/3191037.html 一.类 类就是一个数据结构,封装了数据和操作. 类的声明与函数的声明十分类似: class newClass(object): """class documentation string"""#类文档字符串 class_suite #类体 注意:类是对象(在Python中,一切皆对象),但是类在定义的时候,还不是对象的实现. 二.类属性 在面向对象