python类的知识

1、类的定义与实例化

类的定义

  •     使用class语句来创建一个新类,class之后为类的名称并以冒号结尾,有无()均可。
  •     类名应采用驼峰命名法,即将类名中每个单词的首字母都大写,而不使用下划线。
  •     使用__init__函数初始化

    类的实例化

  •     根据类来创建对象被称为实例化,类的实例化类似函数调用方式
  •     在创建实例的时候,可将必要的属性通过在实例初始化时调用__init__函数填写进去

代码实例:

class Class1:
    # 类文档字符串
    '这是一个类'
    def __init__(self,property1=1,property2=2):
        self.property1 = property1
        self.property2 = property2

instance1 = Class1(property1=3,property2=4)
instance2 = Class1()

类的属性:类中有三种属性,内置属性,类属性和实例属性

  • 内置属性:只要你新建了类,系统就会自动创建这些属性。如__name__等
  • 类属性:直接在类中定义的是类属性(类变量),可在类的所有实例中共享,使用 类名.调用
  • 实例属性:在方法中定义且以self.开头的是实例属性(实例变量),对每个实例是独立的,使用 实例名. 或self. 调用。实例属性一般在__init__方法中初始化。

代码实例:

if __name__ == '__main__':
    pass

class Student():
    # 类属性
    grade = 7
    def __init__(self,age,height):
        # 实例属性
        self.age = age
        self.height = height

类中的方法:

    类中可以定义三种方法:实例方法,类方法,静态方法

  • 实例方法:第一个参数是实例对象self,必须通过实例去调用。
  • 类方法:需要在方法前面加@classmethod的标记符,第一个参数是类本身,一般写作cls,类和实例都可以调用。
  • 静态方法:需要在方法前面加@staticmethod的标记符,没有隐含传递的参数:方法体中不能使用类或实例的任何属性和方法

代码实例:

class Student():
    # 类属性
    grade = 7
    def __init__(self,age,height):
        # 实例属性
        self.age = age
        self.height = height
    # 实例方法
    def print_age(self):
        print(self.age)
    # 类方法
    @classmethod
    def print_grade(cls):
        print(cls.grade)
    # 静态方法
    @staticmethod
    def print_info():
        print('this is a student class')

# Student.print_age() # 报错信息:TypeError: print_age() missing 1 required positional argument: 'self'
Student.print_grade()
Student.print_info()

James = Student(age=12,height=160)
James.print_age()
James.print_grade()
James.print_info()

输出结果:

         

 总结:

类型

标记符

第一个参数

可调用属性

调用

实例方法

self

实例属性&类属性

实例调用

类方法

@classmethod

cls

类属性

类调用&实例调用

静态方法

@staticmethod

类调用&实例调用

2、类的继承

    python允许在一个或多个类的基础上生成派生类,派生类可以使用基类的一些属性和方法,这个过程就叫做继承

    为什么要继承?

        提高代码冗余,提高重用性

  • 基类的成员都会被派生类继承
  • 当基类中某个方法不完全适用于派生类时,需要在派生类中重写父类的这个方法。
  • 当基类中的属性和方法不完全满足派生类时,需要在派生类中添加新的属性和方法。

代码实例:

class Animal():
    def __init__(self,age,name):
        self.age = age
        self.name = name

    def run(self):
        print('奔跑了100米')

    def eat_food(self):
        print('我什么都吃')

class Cat(Animal):
    # 派生方法
    def cat_mouse(self):
        print('catched a mouse')

    # 重写方法
    def eat_food(self):
        print('我更爱吃鱼')

cat1 = Cat(age=6, name='小花')
cat1.run()
cat1.eat_food()
cat1.cat_mouse()

输出结果:

                 

 

__str__方法重写

    Python中object对象有一个__str__()方法,用于返回一个对于“对象的描述”。经常用于print()方法,帮助我们查看对象的信息。__str__()可以重写。

代码实例:

class Cat(Animal):
    # 派生方法
    def cat_mouse(self):
        print('catched a mouse')

    # 重写方法
    def eat_food(self):
        print('我更爱吃鱼')

    def __str__(self):
        return ('我是一只猫,我叫'+str(self.name)+'我今年'+str(self.age)+'岁啦~')

animal1 = Animal(age=5,name='阿强')
cat1 = Cat(age=6, name='小花')
print(animal1)
print(cat1)

输出结果:

 

 

运算符重载

    让自定义类生成的对象(实例)也能够使用运算符进行操作,使程序简洁易读

方法名

运算符和表达式

说明

__add__(self,rhs)

self + rhs

加法

__sub__(self,rhs)

self - rhs

减法

__mul__(self,rhs)

self * rhs

乘法

__truediv__(self,rhs)

self / rhs

除法

__floordiv__(self,rhs)

self // rhs

地板除

__mod__(self,rhs)

self % rhs

取模(求余)

__pow__(self,rhs)

self ** rhs

幂运算

代码实例:

    def __add__(self,other):
        new_age = self.age*other.age
        new_name = '大魔王'
        return Cat(age=new_age,name=new_name)

cat1 = Cat(age=6, name='小花')
cat2 = Cat(age=7, name='小咪')
new_cat = cat1 + cat2
print(new_cat)

输出结果:

 

 

总结:

    抽象和继承

  • 抽象是一个分析的过程。
  • 继承是一个实现的过程。

3、类的模块化

    Python允许将类存储在模块中,然后在主程序中导入所需的模块

  1. 主程序文件简洁易读
  2. 大部分逻辑存储于独立的文件中
  3. 专注于主程序的高级逻辑

代码实例:

class Class1():
    def print_info(self):
        print('模块中的第一个类')

class Class2():
    def print_info(self):
        print('模块中的第二个类')

class Class3():
    def print_info(self):
        print('模块中的第三个类')


from MyClass import Class1,Class2,Class3

instance1 = Class1()
instance2 = Class2()
instance3 = Class3()

instance1.print_info()
instance2.print_info()
instance3.print_info()

 输出结果:

   

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值