Python-15-类的定义和使用

类是什么?

官方定义

类提供了一种组合数据和功能的方法。创建一个新类意味着创建一个新的对象 类型,从而允许创建一个该类型的新 实例 。每个类的实例可以拥有保存自己状态的属性。一个类的实例也可以有改变自己状态的(定义在类中的)方法。

简单的说,类就是一个事物的抽象描述。所以类中可以包含描述类的方法和属性,其中方法又分为普通方法,类方法,静态方法。详细区别可查看Python的@staticmethod和@classmethod的作用与区别,今天主要介绍普通方法。


定义方式:(类似函数的定义),用class来标识。

就像这样:

class ClassName:
    <statements>


    def funs(self, arg):
        # self is the instance of class
        <fun statements>


    @classmethod
    def clsFuns(cls, arg):
        # cls is the class
        <statements>


    @staticmethod
    def staticFun(arg):
        # 与普通函数类似
        <statements>

类怎么用?

需求:我们需要封装一个通用的类来描述男人和女人。

class Man(object):


    def __init__(self):
        print("it is man class...")


    def canPregnant(self):
        print("nonono...man can't pregnant...")


    def haveBeard(self):
        print("yep...")


class Woman(object):


    def __init__(self):
        print("it is woman class...")


    def canPregnant(self):
        print("yep...woman can pregnant...")


    def haveBeard(self):
        print("nonono...")

定义的男人和女人类都描述了其能否怀孕,是否长胡子。

类的使用:

boy=Man()    # 实例化一个男孩
girl=Woman()  # 实例化一个女孩
boy.canPregnant()  # 男孩是否可以怀孕?
girl.canPregnant() # 女孩是否可以怀孕?


# 输出
?  test git:(master) ? python3 test.py
it is man class...
it is woman class...
nonono...man can't pregnant...
yep...woman can pregnant...

类的变量与可访问性

变量(属性)分类:

  • 类变量:直接定义在类中,为所有类对象共享;通过类名访问clsName.var
  • 实例变量:每个实例独有的数据(在__init__方法中定义、初始化);通过实例对象访问inst.var

Python中的可访问性是通过约定来实现的:

  • 私有属性:以两个下划线开始的,__var
  • 保护属性:以一个下划线开始的,_var;只能自身与子类可访问;
  • 普通属性:以字母等开始的。

类的专有方法

Python通过约定一些专有的方法来增强类的功能:

  • __init__:构造函数,在生成对象时调用(实例变量也在此函数中定义);
  • __del__:析构函数,释放对象时使用;
  • __repr__:打印(若有__str__,则先尝试str),转换;
  • __setitem__:按照索引赋值;
  • __getitem__:按照索引取值;
  • __len__:获取长度,内置函数len()使用;
  • __cmp__:比较运算;
  • __call__:函数调用(对象看作一个算子);
  • __add__:加运算;
  • __sub__:减运算;
  • __mul__:乘运算;
  • __div__:除运算;
  • __mod__:求余运算;
  • __pow__:乘方运算;

repr与str:repr()与str()为内置函数,对应类中的__repr____str__来处理字符串:

  • repr对Python(程序员)友好,生成的字符串应可通过eval()重构对象;
  • str为用户友好,方便用户理解的输出;
  • print时先查看__str__,若未定义,再查看__repr__

点击↓↓↓

相关文章

python入门038:创建类

一、面向对象编程1、面向对象编程(Object-oriented Programming简称 OOP)python 是面向对象的编程语言。面向对象编程是一种封装代码的方法。代码封装,其实就是隐藏实现功...

python创建类的方法实例

创建一个学生类:数据:(姓名,姓别,年龄 ,分数)形为:打印信息'''class Studons:def __init__(self,name,xibie,nianling,f...

一日一技:在Python中创建类和对象

要创建一个类,请使用关键字class,如下:class MyClass: x = 5 print(MyClass)打印出结果:<class '__main__.MyClass...

python入门040:根据类创建实例

一、创建实例1、类的实例化定义的类只有进行实例化,也就是使用该类创建实例(对象)之后,才能得到使用。创建类实例(对象)的过程,又称为类的实例化。其语法格式为:类名(参数)在上面的程序中,我们首先创建了...

乐高python编程入门——类及其属性和方法

“ 类是面向对象语言的程序设计中的概念,是面向对象编程的基础。类的实质是一种引用数据类型,类似于 byte、short、int(char)、long、float、double 等基本数据类型,不同的是...