软件测试|Python基础之面向对象(三)

举报
霍格沃兹测试开发 发表于 2023/02/07 17:48:05 2023/02/07
【摘要】 Python面向对象之动态静态方法 动静态方法在类中定义的函数有多种特性直接在类中定义函数再类中直接定义函数,默认绑定给对象,类调用时有几个参数就要传几个参数,对象调用时该函数的第一个参数默认为对象# 定义一个类class Student: # 类公用数据 school_name = '家里蹲大学' # 对象独有数据 def __init__(self, name,...

Python面向对象之动态静态方法

动静态方法

在类中定义的函数有多种特性

  1. 直接在类中定义函数
    再类中直接定义函数,默认绑定给对象,类调用时有几个参数就要传几个参数,对象调用时该函数的第一个参数默认为对象
# 定义一个类
class Student:
    # 类公用数据
    school_name = '家里蹲大学'

    # 对象独有数据
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    # 类公用方法(函数、功能)
    def curricula_variable(self):
        print(f'{self.name}正在选课')


# 类直接调用功能
stu1 = Student('kangkang', 18, 'male')
Student.curricula_variable(stu1)
---------------------------------------------------------------------------
kangkang正在选课
  1. 绑定给类的函数
    被@classmenthod修饰的函数,默认绑定给类,类调用第一个参数就是类自身,对象也可以调用,应且会自动将产生该对象的类当作第一个参数传入
# 定义一个类
class Student:
    # 类公用数据
    school_name = '家里蹲大学'

    # 对象独有数据
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    # 类公用方法(函数、功能)
    def curricula_variable(self):
        print(f'{self.name}正在选课')

    @classmethod
    def func(cls):  # 绑定给类的函数,第一位新参为cls
        print('我是默认绑定给类的功能', cls)


# 类可直接调用
Student.func()
# 对象调用
stu1 = Student('kangkang', 18, 'mela')
stu1.func()
-----------------------------------------------------------------------------
我是默认绑定给类的功能 <class '__main__.Student'>
我是默认绑定给类的功能 <class '__main__.Student'>
  1. 被修饰的普通函数

被@staticmethod修饰的函数,是普通的函数,此函数无论是类还是对象调用,都必须手动传参

# 定义一个类
class Student:
    # 类公用数据
    school_name = '家里蹲大学'

    # 对象独有数据
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    # 类公用方法(函数、功能)
    def curricula_variable(self):
        print(f'{self.name}正在选课')

    @classmethod
    def func(cls):
        print('我是默认绑定给类的功能', cls)

    @staticmethod
    def func2(aaa):
        print(f'我是 {aaa} 被修饰的普通函数,调用我都需要手动传参', )


# 类直接调用
Student.func2('普通函数')
# 对象调用
stu1 = Student('kangkang', 18, 'mela')
stu1.func2('普通函数')
----------------------------------------------------------------------------------

我是 普通函数 被修饰的普通函数,调用我都需要手动传参
我是 普通函数 被修饰的普通函数,调用我都需要手动传参
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。