python中类的用法

类的定义:某个个体之间具备了相同的特征和行为,叫做类
类的定义方式:
: class 类名:
: class 类名():
: class 类名(object):
类的命令规则:一般采用驼峰式的命名规则,且类名要见名知意

类属性

1.类属性的定义:所有成员具有的共同属性,叫做类属性,类 属性也叫做类变量
2.类属性定义位置:一般定义在类里面,方法外面
3.类属性的获取方式:
> 通过类名获取:类名.类属性
> 通过对象名获取:对象名.类属性
4.类属性的修改:只能通过类名.类属性=新值,进行修改

对象

1.对象的概念:对象是一类事物中的一个个个体,一个对象也被称为一个实例,比如,一个car类,一个个实例就是奔驰,宝马,三菱
2.对象的创建和实例化:对象名=类名() ,比如,mycar=Car()
3.类和对象的关联关系:必须现有类,才能有对象
4.如果是对象的内存地址相同的话,表示的是同一个对象,可是使用id(变量名)获取类存地址
5.类和类,类和对象的比较
① 同一个类相比较,内存地址是相同的
②类和属性比较,结果为假
③不同属性和不同属性比较,内存地址不一样,结果为假

对象属性

1.定义:实例属性,也叫做对象属性指的是一个个个体具体的特征,这些特征可以是一样的,也可以是不一样的
2.实例属性的定义位置:定义在类中的***init(self)***方法里面
3.当类中的__init__()方法中有参数是,实例化对象时,必须要传参数,当创建对象时自动调用__init__()里面的内容
4.init()返回一个None,所以,不能再此方法中使用return返回值
5.实例属性的获取:在类外面使用:对象名.实例属性,如果是在类里面或者方法里面。使用self.实例属性
6.修改实例属性:对象名.实例属性=值。注意,类不能修改和获取实例属性

self

在类定义的过程中,代表一个实例(对象),self代表的就是不同的实例对象,在实例未创建出来,使用self给对象占位

类属性和实例属性案例

class Student:
    """封装学生类"""
    # 定义类属性
    identify = 'student'

    # 使用__init__()函数定义实例属性
    def __init__(self, stu_name, stu_age, stu_sex, english_score, mathematics_score, chines_score, stu_duty):
        """
        :param stu_name: 英语成绩
        :param stu_age: 英语成绩
        :param stu_sex: 英语成绩
        :param english_score: 英语成绩
        :param mathematics_score: 数学成绩
        :param chines_score: 语文成绩
        :param stu_duty: 学生职责
        """
        # 使用self.属性=变量来定义属性
        self.stu_name = stu_name
        self.stu_age = stu_age
        self.stu_sex = stu_sex
        self.english_score = english_score
        self.mathematics_score = mathematics_score
        self.chines_score = chines_score
        self.stu_duty = stu_duty
        print('姓名是{},年龄是{},性别是{},英语成绩:{},数学成绩:{},语文成绩:{},职责是:{}'.format(self.stu_name, self.stu_age, self.stu_sex,
                                                                        self.english_score, self.mathematics_score,
                                                                        self.chines_score, self.stu_duty))


# 创建实例对象
wenwen = Student('huahau', 18, '女', 90, 78, 99, '学习委员')
# 通过实例对象获取修改类属性
wenwen.stu_name = 'wenwen'  # wenwen

方法

定义在类里面的函数就是方法,方法代表的是类或者实例的行为
方法的分类:一般常见的有实例方法、类方法、静态方法和魔术方法

实例方法

1.定义:一个对象特有的行为,方法后面有self的就是实例方法,并且实例方法只能通过对象名去调用
2.格式和调用方式:
在这里插入图片描述
3.调用时机:必须是对象被创建后才能调用

类方法

1.定义:类方法必须要放在类里面,且方法前面必须要有@classmethod装饰器,类方法的调用可以在对象未声明之前调用
2.格式和调用方式:
在这里插入图片描述
3.调用时机:对象未创建之前可以调用,对象创建后也可以通过对象名去调用

静态方法

1.定义:不依赖于对象和类, 在定义的方法前面需要声明@staticmethod装饰器
2.格式和调用方式:
在这里插入图片描述
3.调用时机:对象未创建之前可以通过类名去调用,对象创建后也可以通过对象名去调用

魔术方法

魔术方法就是不用手动去调用,python解释器会自动调用的方法叫做魔术方法
1.init(self):初始化方法,一般在此函数中定义对象属性,在创建对象的时候系统会自动调用该方法
2.str(self):一般在此函数里面使用return,将需要展示在控制台的属性放在return后面,在打印对象名的时候会在控制台显示对象属性信息

方法案例:

import random
#定义类
class Person:
    #定义类属性
    type='preson'
    #定义对象属性
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex
    #定义实例方法:
    def eat(self,food):
        print("{}正在吃{}".format(self.name,food))
    #定义类方法
    @classmethod
    def run(cls):
        print("{}正在跑步".format(cls.type))
    #定义静态方法
    @staticmethod
    def sleep():
        hour=random.randint(1,8)
        print("已经睡了{}小时".format(hour))
#使用类调用类方法
Person.run()
#使用类调用静态方法
Person.sleep()
#创建实例
zhangsan=Person('张三',18,'男')
#调用实例方法
zhangsan.eat('红烧肉')
#调用类方法
zhangsan.run()
#调用静态方法
zhangsan.sleep()

继承

1.继承:指的是子类继承父类所有的属性和方法,如果子类有跟父类同名的方法,优先使用子类的方法
2.方法的重写:当继承过来的父类的方法不满足要求时,可以重写父类的方法
3.多重继承:同时继承多个类
4.继承的搜索顺序使用类名.__mro__查看
5.普通的继承格式:
在这里插入图片描述
6.多继承格式:
在这里插入图片描述

继承案例

#定义人类
class Person:
    def __init__(self,name,age,sex,slary):
        self.name=name
        self.age=age
        self.sex=self
        self.slary=slary
    #定义方法
    def getSlary(self):
        return self.slary
#定义销售员类,继承人类
class Salers(Person):
    def __init__(self,name,age,sex,slary,saler_money):
        """
        :param name: 销售员姓名
        :param age: 销售员年龄
        :param sex: 销售员性别
        :param slary: 销售员基本工资
        :param saler_money: 销售员提成
        """
        #调用父类的__init__方法
        super().__init__(name,age,sex,slary)
        self.saler_money=saler_money
        #重写父类的方法
    def getSlary(self):
            money=self.slary+self.saler_money
            return money

#定义雇员类,继承父类
class Employee(Person):
    def __init__(self,name,age,sex,slary,employed_id,hour):
        super().__init__(name,age,sex,slary)
        self.employed_id=employed_id
        self.hour=hour


#创建实例对象
s=Salers('九九',18,'男',1000,2000)#name,age,sex,slary,saler_money
money=s.getSlary()
print('最终工资是:',money)#最终工资是: 3000

练习二

#coding:utf-8
class Person:
    #d
    def __init__(self,name,age):
        self.name=name
        self.age=age
    #
    def eat(self):
        print('{}正在吃东西'.format(self.name))
    def run(self):
        print('{}正在跑步'.format(self.name))
#定义子类
class Student(Person):
    def __init__(self,name,age,clazz):
        super().__init__(name,age)
        self.clazz=clazz
    def eat(self,food):
        super().eat()
        print('{}正在吃{}'.format(self.name,food))
class Employee(Person):
    def __init__(self,name,age,salary,manager):
        super().__init__(name,age)
        self.salary=salary
        self.manager=manager
s=Student('jack',18,'高三')
s.eat('红烧肉')
s.run()

e=Employee('jiajia',14,5000,'陛下')
e.eat()
e.run()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值