python类和对象

python类

    类:具有相同的属性和方法的对象的集合。
    对象:万物皆对象
    类和对象的关系:
    类的包含属性和方法:
语法:
    class 类名:
         属性
对象属性 -->私有 共有
类属性 -->私有 共有 
方法:
        公有方法
         私有方法
类方法
        属性方法
        静态方法:
继承:
        1、子类继承父类,子类可以使用父类的属性和方法,简化代码.
       2、当生成子类对象时,先初始化父类对象,
            所以如果父类有__init__()方法,并且有属性时,要通过子类的构造赋值,
            一个类可以有多个子类。
        初始化时..在子类中,调用父类的属性时,在__init__()方法中使用
        super().__init__(self,属性)self.属性父类.__init__(self,参数)==>父类.__init__(self)-->调用无参
        super(子类,self).__init__(参数) 
        用子类的父类的 __init__
        四种方法给父类传参
        调用父类方法时:super().父类方法()

1、自定义的语法格式

     class 类名:

             '''可注释的文档字符串'''

             类成员

2、类定义的结构

    class关键字

    类名

    冒号(:)

    文档字符串:可选的

    类成员:类的属性和方法

3、自定义一个plane类

    class Plane:

        def disPlayplane(self): #(self)在类的方法定义中使用self,是一个隐函数.

            pass——>表示空语句

4、pass语句

    空语句

    不做任何操作,一般用作占位语句

    用于保证格式完整,保证语义完整

5、类名的命名规范

    首字母大写

    以大写字母分隔单词

    不使用下划线

    例:class Flay:

6、属性名:

    使用名词,说明操作的对象

    首字母小写

    例:name,plane

7、方法名:

    使用谓词(动词+对象),说明对什么对象进行操作

    首字母小写

例:


python类与对象

    1、创建类对象的语法格式

           对象=类名(参数列表)

    注:参数列表是可选的

    2、访问类属性,方法之前必须先创建一个实例对象。

    3、使用 点运算符“.”访问类对象的属性,调用类对象的方法.

例:创建plane类的默认实例对象


类对象的生命周期


self

1、英文中表示自己,本身

     程序中表示类实例对象本身

     是当前类的实例对象

2、使用方法

    作为类方法定义的第一个参数

    是隐函数,调用方法是不需要传入实参

        def 方法名(self,参数列表)


    访问类实例对象的属性

        self.属性

    调用类实例对象的方法

        self.方法(参数列表)

示例:创建一架波音777的Plane类对象


类和对象的属性

    1、任何时候都可以添加,修改或删除类和对象的属性

    2、使用赋值运算符为类对象添加,修改属性值

    3、使用del删除类对象的属性

            del 类名.属性名

    4、plane类对象添加,删除,修改属性----carryNum

例:添加一个属性名为carryNum


例:修改carryNum的值



销毁对象

    手工回收:

            调用__del__()方法清理销毁对象的任何非内存资源.

例:回收对象占用的资源



python类的属性

示例:通过属性获取已创建对象的个数


2、属性

一、类属性

    与类绑定,不依赖于对象,又称为静态属性

    不需要实例化对象

    类和对象都可以访问获取其值

二、实例属性

    存在于对象中

    必须先创建对象,在访问获取其值

    每一个不同的对象都有属于自己的实例属性值


注:当通过对象访问某个属性时候,解释器会先尝试在实例命名空间中寻找.如果找不到,就会去类属性中查找

                                                        类属性

1、在类体中声明,并初始化。

    访问方式:

        类名.属性

        对象名.属性

例:


注:类属性属于类自身,对象仅在没有同名实例属性时才能访问他

2、类属性

例:


注:

    1、类和对象都可以访问类属性,但对象只能读取,不能修改类属性的值。

    2 、当试图通过对象给类属性赋值时吗,解释器会理解为:给对象p的pcount属性赋值

    3、如果对象p没有pcount属性,会自动的给对象p创建一个与类属性同名的实例属性

    因此p.pcount属性与plane.pcount不是同一属性

                                                    获得类属性信息

1、内置函数

            dir():返回类属性列表

2、类的字典属性__dict__:返回一个字典

            (key)键是属性名

            (vaule)值是相应的属性对象的数据值

例:


                                        实例属性

1、多种声明方式

            __init__()声明,并赋值

            通过赋值语句声明,并赋值

例:


2、对象可以访问类属性,但类不能访问实例属性

例:


                                            特殊的类属性

    每个类都具有内置属性

    使用点运算符“.”可以访问

常见的类属性


                                特殊的实例属性

1、获得实例属性信息

        一、内置函数dir()

        二、特殊的对象属性__dict__:获得对象的属性

        三、特殊的对象属性__class__:获得对象所有对应的类名

例:


2、常用的内置函数


例:

class Plane:

    pcount=0

    def __init__(self,name,category):

        self.name=name

        self.category=category

        plane.pcount+=1

    def displayplane(self):

        print('飞机名称:',self.name,'飞机型号:',self.category,'飞机架次:',Plane.pcount)

if __name__=='__main__':

    p=Plane()

    print(hasatter(p,'_name'))

结果:

                    python类的方法

1、实例方法

        一、与类绑定,依赖于对象

        二、在类中声明定义

        三、必须先创建对象,在调用执行

        四、类对象可以调用执行

注:实例方法名(self,参数列表)

2、类方法

        与类绑定,不依赖于对象

        不需要实例化对象

        类和其对象都可以调用执行

注:@classmethod

        类方法名(cls,参数列表)

3、静态方法

        与类方法相似

注:@ststicmethod

        静态方法名(参数列表)


1、语法

            @classmethod

                类方法名(cls,参数列表)

通过装饰器“@classmethod”通知解释器是类方法

第一个参数cls表示当前类

cls是隐含参数,调用方法时不需要传入实参

示例1:


                                    静态方法

1、语法

            @staticmethod

            静态.方法名(参数列表)

2、通过装饰器“@staticmethod”通知解释器是静态方法

3、没有隐含参数

示例2:抽取输出代码形成一个静态方法


示例3:

class traffic:
    def __init__(self,name):
        self.name=name
    def run(self):
        print('交通工具'+self.name+'正在行驶')
class Truck(traffic):
    def __init__(self,name,weight):
        super().__init__(name)
        self.weight=weight
    def run(self):
        print('卡车'+self.name+'重'+str(self.weight)+'正在行驶')
class Train(traffic):
    def __init__(self, name,num):
        super().__init__(name)
        self.num =num
    def run(self):
        print('火车' + self.name + '车厢数' + str(self.num) + '正在行驶')
if  __name__ == '__main__':
    a=Truck('东风',10)
    a.run()
    x=Train('和谐001',500)
    x.run()

结果:









































































































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值