Python基础指面向对象:2、动静态方法
面向对象
一、动静态方法
在类中定义的函数有多种特性
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正在选课
2、绑定给类的函数
被@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'>
3、被修饰的普通函数
被@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('普通函数')
----------------------------------------------------------------------------------
我是 普通函数 被修饰的普通函数,调用我都需要手动传参
我是 普通函数 被修饰的普通函数,调用我都需要手动传参
Python基础指面向对象:2、动静态方法的更多相关文章
- (转)Python成长之路【第九篇】:Python基础之面向对象
一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程-->错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个 ...
- python基础,函数,面向对象,模块练习
---恢复内容开始--- python基础,函数,面向对象,模块练习 1,简述python中基本数据类型中表示False的数据有哪些? # [] {} () None 0 2,位和字节的关系? # ...
- Python 基础 四 面向对象杂谈
Python 基础 四 面向对象杂谈 一.isinstance(obj,cls) 与issubcalss(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls ...
- 自学Python之路-Python基础+模块+面向对象+函数
自学Python之路-Python基础+模块+面向对象+函数 自学Python之路[第一回]:初识Python 1.1 自学Python1.1-简介 1.2 自学Python1.2-环境的 ...
- 【转】Python基础-封装与扩展、静态方法和类方法
[转]Python基础-封装与扩展.静态方法和类方法 一.封装与扩展 封装在于明确区分内外,使得类实现者可以修改封装内的东西而不影响外部调用者的代码:而外部使用者只知道一个接口(函数),只要接口(函数 ...
- 二十. Python基础(20)--面向对象的基础
二十. Python基础(20)--面向对象的基础 1 ● 类/对象/实例化 类:具有相同属性.和方法的一类人/事/物 对象(实例): 具体的某一个人/事/物 实例化: 用类创建对象的过程→类名(参数 ...
- Day7 - Python基础7 面向对象编程进阶
Python之路,Day7 - 面向对象编程进阶 本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个 ...
- Python基础7 面向对象编程进阶
本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个支持多用户在线的FTP程序 面向对象高级语法部分 经典 ...
- python3 速查参考- python基础 8 -> 面向对象基础:类的创建与基础使用,类属性,property、类方法、静态方法、常用知识点概念(封装、继承等等见下一章)
基础概念 1.速查笔记: #-- 最普通的类 class C1(C2, C3): spam = 42 # 数据属性 def __init__(self, name): # 函数属性:构造函数 self ...
随机推荐
- CSP2021-S游记
前言 年纪大了,脑子乱了,渐渐被低年级吊打了. 大家这么内卷下去,高年级的普遍后悔自己生早了,低年级永远占优势,不只是机会优势,还有能力优势. 快进到改变基因出生国家队算了-- Day0 非常不幸地被 ...
- P5384[Cnoi2019]雪松果树 (长链剖分)
题面 一棵以 1 1 1 为根的 N N N 个节点的有根树, Q Q Q 次询问,每次问一个点 u u u 的 k k k 级兄弟有多少个(第 k k k 代祖先的第 k k k 代孩子),如果没有 ...
- 浅析websocket的基本应用spring boot + vue +C# + WPF
1.基本概念 首先websocket是基于H5的一种通信.在网页中如果定时获取服务器端的实时数据,我们常采用long poll 和ajax轮询的方式.但是在轮询过程中,由于根本没有新数据的改变,而造成 ...
- vs完整编译Opencv+contrib
准备条件 Opencv源码(以4.3.0为例) OpenContrib源码(以4.3.0)为例 最新版的CMake GUI CMake 生成项目 设置source code 和生成的build文件夹 ...
- 安装Windows_server_2012_r2虚拟机步骤
创建虚拟机 使用Windows_server_2012_r2镜像 网上搜索Windows产品密钥:TVNTG-VFJQ3-FQXFP-DVCP6-D3VJ8 点击完成,等待加载 选择第二个 等待安装 ...
- Enable_hint_table 使用
KingbaseES enable_hint_table 可以看成类似 oracle outline 工具,可以在不修改SQL 的情况下,通过hint 改变SQL 的执行计划. 一.启用enable_ ...
- Linux下以tar包的形式安装mysql8.0.28
Linux下以tar包的形式安装mysql8.0.28 1.首先卸载自带的Mysql-libs(如果之前安装过mysql,要全都卸载掉) rpm -qa | grep -i -E mysql\|mar ...
- kratos v2版本命令行工具使用
使用 下载 go install github.com/go-kratos/kratos/cmd/kratos/v2@latest 查看是否安装成功 kratos -v kratos version ...
- 面试说:聊聊JavaScript中的数据类型
前言 请讲下 JavaScript 中的数据类型? 前端面试中,估计大家都被这么问过. 答:Javascript 中的数据类型包括原始类型和引用类型.其中原始类型包括 null.undefined.b ...
- ProxySQL 配置ProxySQL
转载自:https://www.jianshu.com/p/212397a1be67 假定你已经对ProxySQL的架构有所了解.本文对ProxySQL的所有配置都是使用Admin管理接口完成的,该管 ...