类的实例方法静态方法类方法属性方法属性
目录:
- 分类
- 实例方法
- 静态方法
- 类方法
- 属性方法
- 属性
分类:
按照调用方式可以分为3种,实例方法、静态方法、和类方法
实例方法
实例方法只能通过实例对象调用,不能通过类进行调用。实例方法再定义时候使用关键字self,self代表实例对象本身。
class A():x=100def fun(self,y):self.x+=y
a=A()
a.fun(10)
print(a.x)
A.fun(10)*****结果******
110
Traceback (most recent call last): #类调用错误File "/home/34f17b632da0cc986bc0f291c0518783.py", line 8, in <module>A.fun(10)
TypeError: fun() missing 1 required positional argument: 'y'
静态方法
静态方法可以使用实例对象调用,也可以使用类进行调用,他的的特点没有参数限制,定义时需要在函数前加@staticmethod
作用:静态方法可以更好的组织代码,防止代码变大后变得比较混乱。
特性: 静态方法只是名义上归类管理,实际上在静态方法里访问不了类或则实例中的任何属性
静态方法使用场景:
- 我们要写一个只在类中运行而不在实例中运行的方法.
- 经常有一些跟类有关系的功能但在运行时又不需要实例和类参与的情况下需要用到静态方法
- 比如更改环境变量或者修改其他类的属性等能用到静态方法
- 这种情况可以直接用函数解决, 但这样同样会扩散类内部的代码,造成维护困难
- 调用方式: 既可以被类直接调用,也可以通过实例调用
@staticmethod静态方法
class Dog(object):def __init__(self,name):self.name = name@staticmethoddef eat():print("I am a static method")
d = Dog("ChenRonghua")
d.eat() #方法1:使用实例调用
Dog.eat() #方法2:使用类直接调用
类方法
可以被类调用,也可以被实例对象调用,实例调用可以给类增加属性,类的属性修改需要通过类进行修改,类方法需要使用关键字cls,定义时候需要在函数前加@classmethod
- 作用:无需实例化直接被类调用
- 特性: 类方法只能访问类变量,不能访问实例变量
- 类方法使用场景: 当我们还未创建实例,但是需要调用类中的方法
- 调用方式: 既可以被类直接调用,也可以通过实例调
@classmethod类方法
class Dog(object):name = '类变量' #在这里如果不定义类变量仅定义实例变量依然报错def __init__(self,name):self.name = '实例变量'self.name = name@classmethoddef eat(self,food):print("%s is eating %s"%(self.name,food))
Dog.eat('baozi') #方法1:使用类直接调用
d = Dog("ChenRonghua")
d.eat("包子") #方法2:使用实例d调用
属性方法
属性方法的作用:
作用:属性方法把一个方法变成一个属性,隐藏了实现细节,调用时不必加括号直接d.eat即可调用self.eat()方法
@property属性方法
class Dog(object):def __init__(self, name):self.name = name@propertydef eat(self):print(" %s is eating" % self.name)
d = Dog("旺旺")
d.eat()
# 调用会出以下错误, 说NoneType is not callable, 因为eat此时已经变成一个静态属性了,
# 不是方法了, 想调用已经不需要加()号了,直接d.eat就可以了
属性
1.类的公有属性
public_attrs:能在类的外部被使用或直接访问。在类内部的方法中使用时 public_attrs_attrs,在类的外部class_name.public_attrs。
2.类的私有属性
__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。
3.类的(公有)方法
在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数,self 代表的是类的实例。
self 的名字并不是规定死的,也可以使用 this,但是最好还是按照约定是用 self。
公有属性,普通属性,私有属性 比较
1. 公有属性:在内存中仅存一份
2. 普通属性:每个实例对象在内存存一份
3. 私有属性:实例在外部无法调用
4.类的私有方法
__private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用。self.__private_methods。
- 默认情况下,程序可以从外部访问一个对象的特性
- 为了让方法和特性变成私有(从外部无法访问),只要在它的名字前加上双下划线即可
- 先在__inaccessible从外界是无法访问的,而在内部还能使用(比如从accessible访问)
类中函数私有化
class Secretive:def __accessible(self):print("you can't see me,unless you're calling internally")def accessible(self):print("The secret message is:")self.__accessible()
s = Secretive()
s.accessible()# 运行结果:
# The secret message is:
# you can't see me,unless you're calling internally
类的实例方法静态方法类方法属性方法属性相关推荐
- python静态方法可以被继承吗_python 类的继承 实例方法.静态方法.类方法的代码解析...
这篇文章主要介绍了python 类的继承 实例方法.静态方法.类方法的代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 dt={} class ...
- python 实例方法 类方法_Python实例方法 静态方法 类方法
@staticmethod和@classmethod的区别 class 类 @staticmethod @classmethod 首先创建一个类,如果想要调用Student类中的方法get_score ...
- Python入门学习笔记11(静态方法、类方法与属性方法)
1.静态方法 静态方法通过@staticmethod装饰,静态方法无法访问类变量和实例变量,可以认为静态方法是一种归类在某个类之下,但是实际上与该类没有直接关系的方法,可通过类名调用. 例如一些工具集 ...
- Python基础学习——面向对象编程(第一讲:面向对象概述、面向对象三个基本特征(封装性、继承性、多态性)、类和对象(定义类、创建和使用对象、实例变量、类变量、构造方法、实例方法、类方法、静态方法))
面向对象是Python最重要的特性,在Python中一切数据类型都是面向对象的. 1.面向对象概述 面向对象的编程思想是,按照真实世界客观事物的自然规律进行分析,客观世界中存在什么样的实体,构建软件系 ...
- Python正则表达式: 元字符/转义/分组/匹配原则/re模块属性方法大全
正则表达式 动机 文本处理已经成为计算机常见工作之一 对文本内容的搜索,定位,提取是逻辑比较复杂的工作 为了快速方便的解决上述问题,产生了正则表达式技术 简介 定义 即文本的高级匹配模式,提供搜索,替 ...
- 类属性,实例属性,私有属性,类方法,实例方法,静态方法,私有方法,魔法方法
实例对象可以调用实例方法/属性.静态方法.类方法/属性,类对象只能调用静态方法和类方法/属性 dir()函数不带参数时,返回当前范围内的变量.方法和定义的类型列表 dir()函数带参数时会返回该参数的 ...
- 类属性、类方法;私有属性、公有属性;私有方法、公有方法;静态属性、静态方法;python的命名规范__xx__\__xx\_xx(自用笔记)
Ⅰ.类属性.类方法(类和实例都能调用类属性和类方法) 类是一个特殊的对象,Python 中 一切皆对象:class AAA: #定义的类属于 类对象obj1 = AAA() #属于 实例对象 除了封装 ...
- Python学习10 内置属性 对象属性 类属性 私有属性 私有方法 对象方法 类方法 静态方法
内置属性 创建类时系统自动创建的属性 # 内置属性:dir(对象),列出所有的内置属性 class Person(object):'''Person类1'''# Person类2__slots__ = ...
- python静态方法,类方法,属性方法,实例方法
DAY 3. 静态方法,类方法,属性方法,实例方法 有四种方法,实例方法,类方法,静态方法,属性方法 实例方法 实例方法的第一个参数是self,他会指向类的实例化对象,只能被对象调用,如 class ...
最新文章
- Ajax实现在textbox中输入内容,动态从数据库中模糊查询显示到下拉框中
- mysql binlog2sql闪回数据
- Boost::context模块callcc的circle测试程序
- 使用SharedPreferences存储和读取数据
- 信息学奥赛一本通 1405:质数的和与积 | OpenJudge NOI 2.1 7827:质数的和与积 | 小学奥数 7827
- android多线程实现计时器,方法一、使用Handler和Thread(线程)实现定时器
- latex ref引用章节号
- Atitit.收银系统模块架构attilax 总结
- Spring之控制反转(IOC)
- 2022-2028年中国智能机床行业市场专项调研及投资前景规划报告
- 普通键盘Windows上虚拟Cherry机械键盘效果的方法
- 金惟纯《人生只有一件事》读书笔记
- html实现简单动画,编写自己的代码库(css3常用动画的实现)
- NIVIDIA 硬解码学习4
- 夜间模式 css,网页夜间模式,CSS样式
- 摄影网页设计制作 简单静态HTML网页作品 WEB静态摄影网站作业成品 学生DW摄影网站模板
- WiderPerson行人检测数据集
- 1251:丛林中的路
- Altium Designer:从零开始的电路板制作攻略
- 区分主谓宾补和主谓宾宾
热门文章
- 数据中心的运维管理原则(二)
- abstractset java_AbstractSet源码分析-java8
- ML:MLOps系列讲解之《基于ML的软件的三个层次之01 Data: Data Engineering Pipelines》解读
- 成功解决torch.cuda.CudaError: CUDA driver version is insufficient for CUDA runtime version (35) [ WARN:0
- AI开发者大会之计算机视觉技术实践与应用:2020年7月3日《如何利用计算机视觉增加便利店连锁每日销售额》、《基于图像 / 视频的人脸和人体分析基础技术及其应用介绍》
- Tool:微信使用技巧之手把手教你如何在电脑端同时登录多个微信账号之图文教程详细攻略
- Crawler/ML:爬虫技术(基于urllib.request库从网页获取图片)+HierarchicalClustering层次聚类算法,实现自动从网页获取图片然后根据图片色调自动分类
- Python3.x 发送邮件
- JAVA_OA(八):springMVC对JDBC的操作小项目a
- Linux下修改Swap分区大小