Python学习(十一) Python 类

Python 类

面向对象编程是有效的软件编写方法之一。

python程序编写方法

  • 1、函数编程,使用函数方式
  • 2、面向对象编程,使用类方式

创建类

创建方法
    构造方法,__init__(self,arg)
        obj = 类(‘a1‘)
    普通方法
        obj = 类(‘xxx’)
        obj.普通方法名()

格式如下:

class DataBaseHelper:

    def __init__(self, ip, port, username, pwd):
        self.ip = ip
        self.port = port
        self.username = username
        self.pwd = pwd

    def add(self,content):
        # 利用self中封装的用户名、密码等   链接数据
        print(‘content‘)
        # 关闭数据链接

    def delete(self,content):
        # 利用self中封装的用户名、密码等   链接数据
        print(‘content‘)
        # 关闭数据链接

    def update(self,content):
        # 利用self中封装的用户名、密码等   链接数据
        print(‘content‘)
        # 关闭数据链接

    def get(self,content):
        # 利用self中封装的用户名、密码等   链接数据
        print(‘content‘)
        # 关闭数据链接
  #封装数据库登陆IP,端口,用户名,密码
  s1 = DataBaseHelper(‘1.1.1.1‘,3306, ‘jorbabe‘, ‘6666‘)

面向对象三大特性

面向对象三大特性之一:封装

使用构造方法封装相同属性:

def __init__(self, n,a):
        self.name = n
        self.age = a
        self.xue = ‘o‘

b1 = Bar(‘jorbabe‘, 18)
b2 = Bar(‘yunlei‘, 19)

面向对象三大特性之二:继承

1、继承

class 父类:
    pass

class 子类(父类):
    pass

2、重写方法 防止执行父类中的方法

3、self永远是执行改方法的调用者

4、

super(子类, self).父类中的方法(...)

父类名.父类中的方法(self,...)

5、Python中支持多继承

  • a. 左侧优先
  • b. 一条道走到黑
  • c. 同一个根时,根最后执

面向对象三大特性之三:多态

python====> 原生多态,忽略多态,python传参不用指定参数的类型。
v = ‘jorbabe‘

def func(arg):
    print(arg)

func(1)
    func(‘jorbabe‘)

类成员

class Foo:
  #静态字段,属于类
  country = ‘中国‘

    def __init__(self, name,):
        # 普通字段
        self.name = name

    # 普通方法
    def show(self):
        print(self.name)

obj = Foo(‘jorbabe‘)
obj.name
obj.show()

类成员: 字段

  • 普通字段,保存在对象中,执行只能通过对象访问
  • 静态字段,保存在类中, 执行 可以通过对象访问 也可以通过类访问

方法

  • 普通方法,保存在类中,由对象来调用,self=》对象
普通方法
    class Foo:
        def bar(self):
            print (‘bar‘)
    #推荐
    obj = Foo()
    obj.bar()

    Foo.bar(obj)
  • 静态方法,保存在类中,由类直接调用
#类方法
    class Foo:
        def bar(self):
            print (‘bar‘)
        #静态方法
        @staticmethod
        def sta():
            print (‘sta‘)
        #静态方法+传参
        @staticmethod
        def stac(a1,a2):
            print (a1,a2)
    Foo.sta()
    Foo.stac(1,2)

    sta
    1 2
  • 类方法,保存在类中,由类直接调用,cls=》当前类
#类方法
    class Foo:
        def bar(self):
            print (‘bar‘)
        #静态方法
        @staticmethod
        def sta():
            print (‘sta‘)
        #静态方法+传参
        @staticmethod
        def stac(a1,a2):
            print (a1,a2)
        #类方法
        @classmethod
        def classmd(cls):
            #cls:类名
            print (cls)
            print (‘classmd‘)

    Foo.classmd()

    <class ‘__main__.Foo‘>
    classmd

应用场景:

  • 如果对象中需要保存一些值,执行某功能时,需要使用对象中的值 -> 普通方法
  • 不需要任何对象中的值,静态方法

属性

class Foo:
        def __init__(self):
            self.name = ‘a‘
        def bar(self):
            print (‘bar‘)
        #属性或特性
        @property
        def per(self):
            print (‘per‘)

    obj = Foo()
    # obj.per()
    obj.per
  • 调用方式一一对应
class Foo:
        def __init__(self):
            self.name = ‘a‘
        def bar(self):
            print (‘bar‘)
        #属性或特性。调用方式:obj.per
        @property
        def per(self):
            # print (‘per‘)
            return 1
        #属性传参。调用方式:obj.per = 123
        @per.setter
        def per(self,val):
            print (val)
        #属性参数删除。调用方式:del obj.per
        @per.deleter
        def per(self):
            print (‘666666‘)
    obj = Foo()
    # obj.per()
    obj.per
    r = obj.per
    print (r)
    obj.per = 123

    del obj.per

    1
    123
    666666
中国的所有省份,用面向对象知识表示?

class Province:
    # 静态字段,属于类
    country =  ‘中国‘

    def __init__(self, name):
        # 普通字段,属于对象
        self.name = name

henan = Province(‘河南‘)
henan.name
henan.name = "河南南"

#hebei = Province(‘河北‘)

# Province.country
print (Province.country)
print (henan.name)

中国
河南南
实例:利用属性功能实现分页
class Pargination:
    #定义页码
    def __init__(self,current_page):
        #判断是否是整数
        try:
            p = int(current_page)
        except Exception as e:
            p = 1
        #页码赋值
        self.page = p
    #计算开始
    @property
    def start(self):
        val = (self.page - 1) * 10
        return val
    #计算结尾
    @property
    def end(self):
        val = self.page * 10
        return val
#定义元组列表
li = []
#定义元组列表赋值
for i in range(1000):
    li.append(i)
while True:
    p = input (‘请输入要查看的页码:‘)
    #给类的方法传值
    obj = Pargination(p)
    #类方法未添加属性前的调用方式
    # print (li[obj.start():obj.end()])
    #方法添加属性后的调用方式,去括号
    print (li[obj.start:obj.end])
请输入要查看的页码:5
[40, 41, 42, 43, 44, 45, 46, 47, 48, 49]
请输入要查看的页码:6
[50, 51, 52, 53, 54, 55, 56, 57, 58, 59]
请输入要查看的页码:aa
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
请输入要查看的页码:

原文地址:https://www.cnblogs.com/jorbabe/p/8733829.html

时间: 2024-12-10 15:43:10

Python学习(十一) Python 类的相关文章

Python学习(十一) Python数据类型:字典(重要)

字典dict: 字典其实就相当于java里面的Map,用来存储键值对的.其中存储的数据时无序的. 假如有这样的数据: t1=['name','age','sex'] t2=['tom',30,'male'] 通过zip(t1,t2)可以获取到这样的数据[('name','tom'),('age',30),('sex','male')] 字典定义是通过 {}进行的. 字典是Python当中唯一的映射类型(哈希表),字段对象时可变的,但是字典对象的键必须是不可变的,并且一个字典中可以包含不通类型的键

Python学习心得:类与对象

教材:<简明Python教程> Python面向对象: 如shell这种面向过程的程序都是通过"操作数据的函数"或者"语句块"来设计函数. python的程序(面向对象): 类是一个"class"类型,对象是类中的一个实例. 类的属性包括了:域和方法.(即变量和函数) 属于一个对象或类的变量被称为域,一个定义在类中的函数,叫做类的方法. 类使用关键字"class"来创建.域和方法放在同一个缩进块中. 1.域有两种:

Python学习教程(Python学习路线+Python学习视频):Python数据结构

Python学习教程(Python学习路线+Python学习视频):Python数据结构   数据结构引言:   数据结构是组织数据的方式,以便能够更好的存储和获取数据.数据结构定义数据之间的关系和对这些数据的操作方式.数据结构屏蔽了数据存储和操作的细节,让程序员能更好的处理业务逻辑,同时拥有快速的数据存储和获取方式. 在这篇文章中,你将了解到多种数据结构以及这些数据结构在Python中实现的方式.    抽象数据类型和数据结构 数据结构是抽象数据类型(ADT)的实现,通常,是通过编程语言提供的

总结:Python学习 和 Python与C/C++交互

本篇仅仅是Python的学习和Python和C++数据对接过程中的一些总结. 由于工作的需要,用一周的时间学习 Python. Python是基于C实现的一门解释型语言,由于其易用性,俘获了不少开发者和运维的心.据说,Python 在科学计算领域,逐步吞噬着古老语言 Fortran的份额.这门语言是Google的第二语言,国内的知乎,豆瓣,都使用纯Python开发.Python的官方网站:http://www/python.org. 为了逐步完善的我们的数据库驱动服务,我们需要为客户提供更多,更

python学习(十一)测试和调试

最近学习了python的错误处理和几种测试方法 1 try except 可以通过try except方式捕捉异常 try: print('try...') r = 10/0 print('result is :', r) except ZeroDiversionError as e: print('except is :', e) finally: print('finally ...') print('END') 可以捕捉不同类型的错误,编写多个except try: print('try.

Python学习之定制类

本文和大家分享的主要是 python开发中定制类的相关内容,一起来看看吧,希望对大家学习和使用这部分内容有所帮助. 1. python中什么是特殊方法 任何数据类型的实例都有一个特殊方法:  __str__() ·  用于 print 的  __str__ ·  用于 len 的  __len__ ·  用于 cmp 的  __cmp__ ·  特殊方法定义在 class 中 ·  不需要直接调用 · Python 的某些函数或操作符会调用对应的特殊方法 file:///C:\Users\wlc

Python学习(一) Python安装配置

我本身是Java程序猿,听说Python很强大,所以准备学习一下Python,虽说语言都是相同的,但java跟python肯定还是有区别的.希望在此记录一下自己的学习过程. 目前,Python分2.X版本和3.X版本.我选择的是Python2.x版本.为了快速学习Python的WEB开发,我选择的Python的WEB开发框架是Django.Django有个好处就是自带了后台管理系统. 第一步,下载: 因本人使用的电脑操作系统是Windows7 64位,所以选择下载Python的windows安装

python学习笔记-python安装

我是在读的大四学生,小白一枚,想要学习人工智能.我会把我每天所学的分享出来,希望那些跟我志同道合的人,咱们一起学习和交流. 那咱们就从python开始学起.第一次写博客,心里还有点小激动..嘻嘻 本教程非常简单,如果有编程基础的人可以直接跳过.我主要是还考虑到什么都不懂的小白.虽然我也是个小白,嘻嘻. python有两个版本,一个2.x,一个3.x, 建议学python3,因为后面要学习的一些东西python2可能不支持. 首先打开度娘,百度python,进入python官网 点击下载 底下有各

Python基础教程:Python学习视频Python让你敲的代码不再是造轮子

你敲的代码是在造轮子?那就学Python呗!_Python基础教程 Bruce大神说" 人生苦短,我用Python ". 从公司角度而言: 国内基于Python创业成功的案例不在少数,豆瓣.知乎.果壳,全栈都是 Python,大家对Python自然有信心.并且从这几家公司出来的程序员与 CTO,创业的话一般都会选择Python. 从开发者个人角度而言: 计算机语言只是用来达成目的工具,?各种强大的第三方库,拿来就能用才是王道,让程序替代我们执行一些枯燥繁琐的工作.?至于句式是否优美.能

Python学习之--python概要

1 Python的优点 Python语言类库齐全,语法简洁,而且在linux上自带安装,在处理大数据以及自动化方面有其独有的特点.2 Python的解释器 Python解释器用来解释python代码,比较流行的python解释器有:   CPython, 使用C解释器,将python源码解释为.pyc文件(字节码)   JPython, 使用java解释器,将python源码解释为java识别的字节码   IronPython, 使用c#解释器解释为c#识别的字节码   PyPy,解释器解释为字