python 类的封装

封装:即在设计类时,刻意的将一些属性和方法隐藏在类的内部,这样将无法直接以"类对象.属性名"(或者"类对象.方法名(参数)")的形式调用这些属性(或方法),而只能用未隐藏的方法间接的操作这些隐藏的属性和方法。

  1. 封装机制保证了类内部数据结构的完整性,很好的避免了外部对内部数据的影响,提高了程序的可维护性。
  2. 避免用户对类中属性或方法进行不合理的操作。
  3. 提供代码的复用性。

python类如何进行封装
不同于其他面向对象的编程语言,python类中的变量和函数不是共有的就是私有的。

  1. public:公有属性的类变量和类函数,在类的外部、类内部以及子类中,都可以正常访问
  2. private:私有属性的类变量和类函数,只有在本类内部使用,类的外部以及子类都无法使用。

但是,python并没有提供public、private这些修饰符。为了实现类的封装,python采取了下面的方法:

  1. 默认情况下,python类中的变量和方法都是公有的,它们的名称前都没有下划线(_)
  2. 如果类中的变量和函数,其名称以双下划线“__”开头,则该变量或函数为私有的。
  3. 以单下划线“_”开头的类属性和类方法约定俗成的被视为私有属性和私有方法,虽然它们也能通过类对象正常访问,但是建议不要这样。
  4. 以双下划线开头和结尾的类方法(如__init__())时python内部定义的,自己定义时,不要使用这种格式。
class Person:
    def setname(self, name):
        if len(name) < 3:
            raise ValueError('名称长度必须大于3!')
        self.__name = name

    def getname(self):
        return self.__name

    #为name配置setter和getter方法
    name = property(getname, setname)

    def setage(self, age):
        if age < 100:
            self.__age = age
        else:
            raise ValueError('年龄必须小于100!')

    def getage(self):
        return self.__age

    #为age配置getter和setter方法
    age = property(getage, setage)

    #定义私有方法
    def __display(self):
        print(self.__name, "今年", self.__age, "岁。")

xiaobai = Person()
xiaobai.name = "xiaobai"
xiaobai.age = 20
print(xiaobai.name)
print(xiaobai.age)
xiaobai
20

原文地址:https://www.cnblogs.com/xiaobaizzz/p/12227501.html

时间: 2024-11-06 13:42:12

python 类的封装的相关文章

Python——类的封装

1 class Gun: 2 def __init__(self, model): 3 4 # 1. 枪的型号 5 self.model = model 6 7 # 2. 子弹的数量 8 self.bullet_count = 0 9 10 def add_bullet(self, count): 11 12 self.bullet_count += count 13 14 def shoot(self): 15 16 # 1. 判断字弹的数量 17 if self.bullet_count <

Python类总结-封装(Property)

Property #property #内置装饰器函数,只在面向对象中使用 from math import pi class Circle: def __init__(self,r ): self.r = r @property def perimeter(self):#property属性不能传递任何参数 return 2*pi*self.r @property def area(self): return self.r**2*pi c1 = Circle(5) # print(c1.are

LightMysql:为方便操作MySQL而封装的Python类

原文链接:http://www.danfengcao.info/python/2015/12/26/lightweight-python-mysql-class.html mysqldb是Python操作MySQL数据库的一个常用包.但在使用过程中,我认为用起来还不够简便.为此,我在mysqldb的基础上封装了一个Python类LightMysql. 先来看如何使用 example.py #!/usr/bin/env python # -*- coding: utf-8 -*- from Lig

Python 类 类的封装,继承 ,多继承

__author__ = '12711'#-*- coding:utf-8 -*-# class Animal(object):# name='xxx'# def __init__(self,name,age):# self.name=name# self.age=age## def eat(self):# print("%s开始吃东西了"%(self.name))## def seelp(self):# print("%s开始睡觉了"%(self.name))##

Python 基础之面向对象初识与类的封装

一: 面向对象类的初识#(1) 类的定义#三种方式:#1.class MyClass:    pass #2.推荐class MyClass():    pass #3.class MyClass(object):    pass#(2) 类的实例化class MyClass():    pass#类的实例化,实例化对象obj = MyClass() #obj 就是一个对象#(3)类的基本结构只有成员方法和成员属性对象.属性  对象.方法()#例:class MyClass():    #成员属

第六章 Python类(面向对象编程)

什么是面向对象编程? 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构.Python就是这种编程语言. 面向对象程序设计中的概念主要包括:对象.类.继承.动态绑定.封装.多态性.消息传递.方法. 1)对象:类的实体,比如一个人. 2)类:一个共享相同结构和行为的对象的集合.通俗的讲就是分类,比如人是一类,动物是一类. 3)继承:类之间的关系,比如猫狗是一类,他们都有四条腿,狗继承了这个四条腿,拥有了这个属性. 4)动态绑定:在不

Python面向对象编程-封装

1引言 你点击了桌面上的Chrome图标,一个浏览器窗口出现了,输入网址就可以在Internet世界愉快玩耍.这一切是怎么实现的呢?Chromium这个多进程的程序是如何启动各个进程的呢?浏览器主进程(界面进程)启动了哪些线程?如何启动的呢?这些问题一直萦绕在心头,一起来看看源代码吧.本文主要针对Chromium for Mac的源代码,其它操作系统大同小异. 2背景知识 浏览器作为一个应用程序,是以进程的形式运行在操作系统上的.首先,Chromium是一个多进程的应用程序,我们需要了解Chro

python类及其方法

python类及其方法 一.介绍 在 Python 中,面向对象编程主要有两个主题,就是类和类实例类与实例:类与实例相互关联着:类是对象的定义,而实例是"真正的实物",它存放了类中所定义的对象的具体信息. 类有这样一些的优点: 1.类对象是多态的:也就是多种形态,这意味着我们可以对不同的类对象使用同样的操作方法,而不需要额外写代码. 2.类的封装:封装之后,可以直接调用类的对象,来操作内部的一些类方法,不需要让使用者看到代码工作的细节. 3.类的继承:类可以从其它类或者元类中继承它们的

python类:类方法和静态方法

http://blog.csdn.net/pipisorry/article/details/49516185 面相对象程序设计中,类方法和静态方法是经常用到的两个术语.逻辑上讲:类方法是只能由类名调用:静态方法可以由类名或对象名进行调用.在C++中,静态方法与类方法逻辑上是等价的,只有一个概念,不会混淆.在python中,方法分为三类实例方法.类方法.静态方法. @classmethod和@staticmethod 他们的使用场景并不一样.在python中,两种方法的主要区别在于参数 类内部普