Day 19:面向对象【类方法】静态属性/静态属性/类方法
静态属性 @property
class Mom:
gender = "woman"
def __init__(self,name,weight):
self.name = name
self.weight = weight
@property#静态方法
#把一个方法做成
def cook_dinner(self):
return " %s 今天做个,蛋糕" % (self.name) m1 = Mom('XFD',120)
# print(m1.cook_dinner())#这样执行就报错了
print(m1.cook_dinner)#看起来是了调用了数据属性,实际上就是调用了方法
#@property 有隐藏函数属性的作用,在外展示,好像是数据属性一样
静态方法:我感觉没个卵用
class Mom:
gender = "woman"
def __init__(self,name,weight):
self.name = name
self.weight = weight
@staticmethod#
def clean_up(a,b):#没有self 就和实例绑定
return "XFD 正在擦%s,%s" % (a,b)
def clean_up1(a,b):
return "XFD 正在擦%s,%s" % (a,b)
#
print(Mom.clean_up('桌子',"凳子"))#XFD 正在擦桌子,凳子
m1 = Mom("xfd",110)
print(m1.clean_up('桌子',"凳子"))#实例也可以调用
#@staticmethod 类的工具包
#不跟类绑定,也不和实例绑定
#Mom.clean_up1(1,2)这样是可以调用
#m1.clean_up1(1,2) 这样不可以调用 :为什么呢?
#(调用时会把自己(m1)传进去,但是我们又没有定义肯定报错咯)
#加@staticmethod和不加有什么区别呢 ?
静态方法只是名义上归类管理,不能使用类变量和实例变量
@staticmethod
类方法
需求:不使用实例,怎么调用类的函数属性
class Mom:
gender = "woman"
def __init__(self,name,weight):
self.name = name
self.weight = weight
# @property#静态方法
#把一个方法做成
@classmethod#专门给类使用的方法
def cook_dinner(cls):#记得这个关键字 cls
# 用classmethod时,要专门给定义一个这个方法供类调用
return " %s 今天做个,蛋糕" % (cls.gender) # def cook_dinner(self):
# return " %s 今天做个,蛋糕" % (self.name) print(Mom.gender)
M1 =Mom("XFD","")
# print(Mom.cook_dinner(M1))#这样调用不到。 print(M1.cook_dinner())#如果使用类方法,只能通过实例来调用
#类方法,那就是不通过实例,直接调用怎么办呢
#@classmethod 把这个放置在类方法的前面类就可以直接调用了(cls)
类方法@classmethod
备注:类方法:记得只调用类的数据属性,不要cls. init里面的数据属性。那是实例用的!
Day 19:面向对象【类方法】静态属性/静态属性/类方法的更多相关文章
- Python面向对象05 /私有成员、类方法、静态方法、属性、isinstance/issubclass
Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubclass 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/is ...
- python 面向对象专题(五):私有成员、类方法、静态方法、属性、isinstance/issubclass
https://www.cnblogs.com/liubing8/p/11325421.html 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubc ...
- Python之路-面向对象&继承和多态&类属性和实例属性&类方法和静态方法
一.面向对象 编程方式 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强…” 什么是面 ...
- Swift中的类型属性(静态变量)
http://blog.haohtml.com/archives/15098 Swift中的类型属性(静态变量) Posted on 2014/06/13 类型属性语法 在 C 或 Objective ...
- 洗礼灵魂,修炼python(33)--面向对象编程(3)—特殊类方法__init__,公有属性,私有属性
在上一篇博文里,传入参数时,是在实例化对象后且在调用方法时才传入参数,感觉是不是有点繁琐对吧?可以在实例化的时候就传入参数吗?可以的,这就是本篇博文的要讲到的构造器——__init__(两边双下划线) ...
- python 面向对象类成员(字段 方法 属性)
一.字段 字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同, 普通字段属于对象 静态字段属于类 class Province: # 静态字段 countr ...
- day25——私有成员、类方法、静态方法、属性、isinstance和issubclass的区别
day25 类的私有成员 当你遇到重要的数据,功能(只允许本类使用的一些方法,数据)设置成私有成员 python所有的私有成员都是纸老虎,形同虚设 类从加载时,只要遇到类中的私有成员,都会在私有成员前 ...
- Python进阶----类的结构(公有成员 , 私有成员(私有属性,私有方法),类方法,静态方法,属性) ,isinstance 和issubcalss ,元类(type())
Python进阶----类的结构(公有成员 , 私有成员(私有属性,私有方法),类方法,静态方法,属性) ,isinstance 和issubcalss ,元类(type()) 一丶类的结构细分 ...
- Python面向对象的特征跟私有属性
面向对象的三大特征 继成.封装.多态: 继承:一个类可以继承一个或多个类,被继承的类叫做父类,继承的类叫做子类 封装:将数据和方法放在了一个类中就构成了封装 多态:指的一类事物有多重形态,一个抽象类 ...
- python面向对象-2深入类的属性
在交互式环境中输入: >>> class A: a=0 def __init__(self): self.a=10 self.b=100 >>> a=A() > ...
随机推荐
- Scrapy爬虫实战-爬取体彩排列5历史数据
网站地址:http://www.17500.cn/p5/all.php 1.新建爬虫项目 scrapy startproject pfive 2.在spiders目录下新建爬虫 scrapy gens ...
- 分析/proc/[pid]/maps中的各个内存区域的大小
cat maps | sed -e "s/\([0-9a-f]\{8\}\)-\([0-9a-f]\{8\}\)/0x\1 0x\2/" | awk '{printf(" ...
- 数据持久化之轻量级Kv持久化(二)
阿里P7Android高级架构进阶视频免费学习请点击:https://space.bilibili.com/474380680本篇文章将继续从以下两个内容来介绍轻量级Kv持久化: [SharedPre ...
- neo4j简单学习
阅读更多 背景 最近在一些论坛或者新闻里看到了neo4j,一种擅长处理图形的数据库. 据说非常适合做一些join关系型的查询,所以抽空也看了下相关文档,给自己做个技术储备. 过程 深入学习之前,先在网 ...
- vue--先决篇
一.vue介绍: vue是一个渐进式Javascript框架. 渐进式:即有一个核心库,在需要的时候,在逐渐添加插件的一种概念. (1)MVVM和MVC模式: MVVM是Model-View-View ...
- 读书笔记-----javascript基本数据类型
由于js基础差, 记性也不好,准备一边读书一边做记录,希望这样能加深一下记忆 /* 第一天 */ javascript 基本数据类型 js一共只有五种数据类型 Undefined, Nu ...
- shell位置参数变量
- 项目案例之Pipeline流水线发布JAVA项目(三)
项目案例之Pipeline流水线发布JAVA项目(三) 链接:https://pan.baidu.com/s/1NZZbocZuNwtQS0eGkkglXQ 提取码:z7gj 复制这段内容后打开百度网 ...
- 一、基础项目构建,引入web模块,完成一个简单的RESTful API
一.Spring Boot的主要优点: 为所有Spring开发者更快的入门 开箱即用,提供各种默认配置来简化项目配置 内嵌式容器简化Web项目 没有冗余代码生成和XML配置的要求 二.使用maven构 ...
- vue 多选框 checkbox 父到子传值
vue多选功能, 修改时选中的状态不能从当前组件中得到,从父组件中传过来. 这里 新增和修改封装了一个组件,在点击确定按钮后,会发送新增或修改请求,重新渲染页面.但是在点击[新增]/ [修改]按钮时, ...