当前位置: 首页 > article >正文

类的定义和使用(python)

一、定义一个类

格式:

class 类名(建议首字母大写):

        pass

class Student:#定义了一个Student类
    age=18
    def __init__(self,name,hight):
        self.name=name
        self.hight=hight

二、定义属性

(一)类属性

class Student:
    age=18#类属性
    def __init__(self,name,hight):
        self.name=name
        self.hight=hight

(二)实例属性(利用构造函数得出的属性为实例属性)

class Student:
    age=18
    def __init__(self,n,h):#构造函数
        self.name=n
        self.high=h
#name和high都为实例属性

三、方法

(一)实例方法(一般类中定义的方法默认都是实例方法)

class Student:
    age=18#类属性
    def __init__(self,n,h):
        self.name=n
        self.high=h
    def talk(self):#实例方法
        return "我叫{},今年{}岁,身高为{}".format(self.name, Student.age, self.high)
    

(二)类方法(与实例方法相似,必须含有cls这个参数,和@classmethod修饰符

格式:

@classmethod

def 函数名(cls):

        pass(一般用类的属性来编写)

class Student:
    age=18
    def __init__(self,n,h):
        self.name=n
        self.high=h
    def talk(self):
        return "我叫{},今年{}岁,身高为{}".format(self.name, Student.age, self.high)
    @classmethod
    def put(cls):#类方法
        print(cls.age)#类方法一般用类的属性(而不使用实例属性)

(三)类静态方法(没有像self、cls的参数,使用@staticmethod修饰符)

格式:

@staticmethod

def 函数名():

        pass(无法调用任何类属性和类方法)

class Student:
    age=18
    def __init__(self,n,h):
        self.name=n
        self.high=h
    def talk(self):
        return "我叫{},今年{}岁,身高为{}".format(self.name, Student.age, self.high)
    @classmethod
    def put(cls):
        print(cls.age)
    @staticmethod
    def test():#类静态方法
        print("Hello")

四、调用方法

(一)在(类)方法里面调用属性

1.调用类属性格式:

类名.调用的属性名

class Student:
    age=18#类属性
    def __init__(self,n,h):
        self.name=n
        self.high=h
    def talk(self):
        return "我叫{},今年{}岁,身高为{}".format(self.name, Student.age, self.high)
#                                                                |
#                                                          此处调用了类属性
2.调用实例属性格式:

该方法的参数(self/cls).属性名

class Student:
    age=18#类属性
    def __init__(self,n,h):
        self.name=n
        self.high=h
    def talk(self):
        return "我叫{},今年{}岁,身高为{}".format(self.name, Student.age, self.high)
#                                                    |                        |
#                                              调用了实例属性             调用了实例属性

(二)在(类)方法里面调用该类里面的其它方法

格式:类名.类方法

class Student:
    age=18
    def __init__(self,n,h):
        self.name=n
        self.high=h
    def talk(self):
        return "我叫{},今年{}岁,身高为{}".format(self.name, Student.age, self.high)
    def look(self):
        return Student.talk(self)#调用了已经定义好的talk方法

(三)在类外部调用属性

1.调用类属性格式:

类名.类属性名

变量=类名(有参数则传参数)##实例化

   变量.类属性名

class Student:
    age=18#类属性
    def __init__(self,n,h):
        self.name=n
        self.high=h
    def talk(self):
        return "我叫{},今年{}岁,身高为{}".format(self.name, Student.age, self.high)

print(Student.age)#第一种方法
s=Student("Lihua",180)
print(s.age)#第二种方法
#结果
18
18

2.调用实例属性格式:

变量=类名(有参数则传参数)##实例化

变量.实例属性名

class Student:
    age=18
    def __init__(self,n,h):
        self.name=n#实例属性
        self.high=h#实例属性
    def talk(self):
        return "我叫{},今年{}岁,身高为{}".format(self.name, Student.age, self.high)

s=Student("Lihua",180)
print(s.name)#调用实例属性
#结果
Lihua

(四)在类外部调用类和实例方法

格式:

①类名.类/实例方法名

②变量=类名(有参数则传参数)

变量.类/实例方法名

class Student:
    age=18
    def __init__(self,n,h):
        self.name=n
        self.high=h
    def talk(self):#实例方法
        return "我叫{},今年{}岁,身高为{}".format(self.name, Student.age, self.high)
    @classmethod
    def put(cls):#类方法
        return cls.age
    @staticmethod
    def test():#类方法
        return "Hello"
#方法一
print(Student.put())
print(Student.test())
#因为实例方法包含一些参数没有传入,所以无法调用
#方法二
s=Student("Lihua",180)
print(s.talk())
print(s.put())
print(s.test())
#结果
18
Hello
我叫Lihua,今年18岁,身高为180
18
Hello


http://www.kler.cn/a/469393.html

相关文章:

  • 面试经典150题——链表(二)
  • 【HarmonyOS-ArkTS语言】计算器的实现【合集】
  • Spring AMQP ----注解篇
  • 今日头条ip属地根据什么显示?不准确怎么办
  • ValuesRAG:以检索增强情境学习强化文化对齐
  • 动态库dll与静态库lib编程4:MFC规则DLL讲解
  • 电路学习之前言
  • 如何从HTML文件中提取所需数据
  • 第六讲 比特币的机构化进程
  • 超越局部损失函数的预测-优化方法
  • 基于SPring Boot的高校就业招聘系统设计与实现(LW+源码+讲解)
  • 我的创作纪念日——《惊变128天》
  • webapi+vue3实现前后端图片传输
  • python pyqt5+designer的信号槽和动态显示
  • ArcGIS Server 10.2授权文件过期处理
  • C语言基础学习笔记(持续更新~)
  • JVM实战—8.如何分析jstat统计来定位GC
  • 云打印之菜鸟打印组件交互协议
  • 记录学习《手动学习深度学习》这本书的笔记(七)
  • Unity的四种数据持久化方式
  • unity学习9:unity的Asset 导入和导出
  • Go语言的 的设计模式(Design Patterns)基础知识
  • 富芮坤FR800X系列之软件开发工具链(如IDE、编译器、调试器等)
  • 【大模型】7 天 AI 大模型学习
  • 『SQLite』表的创建、修改和删除
  • Centos中常见的几个问题及其解决办法