首页 > 其他分享 >面向对象 静态方法和动态方法 ;静态更先进因为新建和被调用时不需要传self

面向对象 静态方法和动态方法 ;静态更先进因为新建和被调用时不需要传self

时间:2023-09-28 19:55:23浏览次数:38  
标签:__ 静态方法 self Handmade 面向对象 print umbrella make

展示动态方法  需要加self

# A.py  调用B的制作伞 和扇子
from B import Handmade
class Weather:
    def __init__(self, type):
        self.type = type
    def action(self):
        f = Handmade.make_fan(self)
        u = Handmade.make_umbrella(self)
        print("----")
        if self.type == "sunny":
            print("晴天")
            print(f"拿{f}来扇风")
        elif self.type == "rainy":
            print("雨天")
            print(f"拿{u}来挡雨")

if __name__ == "__main__":
    weather = Weather("sunny")
    weather.action()
    print("另一种天气----")
    weather = Weather("rainy")
    weather.action()
# B.py   制作伞 制作扇子
class Handmade:
    def make_umbrella(self):
        print("制作雨伞,以备下雨天用")
        umbrella="一把雨伞"
        return umbrella
    def make_fan(self):
        print("制作扇子,以备晴天用")
        fan="一把扇子"
        return fan
if __name__ == "__main__":
    # 实例化出一个手工对象
    handmade = Handmade()
    # 调用方法1
    handmade.make_umbrella()
    # 调用方法2
    handmade.make_fan()

动态方法

第一步 修改B.py为动态方法  加修饰器  去掉self 参数

# B.py   制作伞 制作扇子
class Handmade:
    @staticmethod
    def make_umbrella():
        print("制作雨伞,以备下雨天用")
        umbrella="一把雨伞"
        return umbrella
    def make_fan():
        print("制作扇子,以备晴天用")
        fan="一把扇子"
        return fan
if __name__ == "__main__":
    # 实例化出一个手工对象
    handmade = Handmade()
    # 调用方法1
    handmade.make_umbrella()
    # 调用方法2
    handmade.make_fan()

第二步  修改A.py 去掉self

# A.py  调用B的制作伞
from B import Handmade
class Weather:
    def __init__(self, type):
        self.type = type
    def action(self):
        f = Handmade.make_fan()
        u = Handmade.make_umbrella()
        print("----")
        if self.type == "sunny":
            print("晴天")
            print(f"拿{f}来扇风")
        elif self.type == "rainy":
            print("雨天")
            print(f"拿{u}来挡雨")

if __name__ == "__main__":
    weather = Weather("sunny")
    weather.action()
    print("另一种天气----")
    weather = Weather("rainy")
    weather.action()

 

标签:__,静态方法,self,Handmade,面向对象,print,umbrella,make
From: https://www.cnblogs.com/haha1988/p/17736408.html

相关文章

  • 用策略模式干掉代码里大量的if-eles或则Swatch,提升B格由面向过程转为面向对象
    现象大量的分支选择型代码段看着让人头疼for(Fieldfield:declaredFields){Class<?>type=field.getType();Stringkey=field.getName();Elementresult=resultMap.addElement("result");result.addAttribute......
  • CPP面向对象笔记
    基本属性即在类中包含的一系列变量方法即在类中定义的一系列函数Public,PrivateandProtected在没有继承的情况下,private与protected效果相同即都无法在类外直接访问调用实在想要访问,加个函数就行public则可以随意访问调用static仅与类的整体全局有关不受具体哪......
  • self
    自我介绍哪里人准备在长沙吗我在本科时候,每年最具幸福感的城市排名长沙都榜上,之前也不太清楚世界有这么大去年跟家里人有去长沙玩过两天,岳麓山,烟火气息要比我呆过的地方更弄一些。生活压力来说我感觉也不会那么的大,如果能在长沙的话那是很好的选择。本科是南京工......
  • 论文解读:CrossPoint: Self-Supervised Cross-Modal Contrastive Learning for 3D Poin
    CrossPoint:Self-SupervisedCross-ModalContrastiveLearningfor3DPointCloudUnderstanding本文提出一种简单的跨模态3维—2维区域对应模块,分别将点云模态和图像模态提取的特征向量重新投影到一个公共的特征空间中,并基于最大化与模态无关的互信息的思想设计对比学习损失......
  • Java面向对象概念详解
    对象对象有两个层次的概念,现实生活中对象指的是可观世界的实体;而程序中对象就是一组变量和相关方法的集合,其中变量表明对象的状态,方法表明对象所具有的行为。可以将现实生活中的对象经过抽象,映射为程序中的对象,对象是对现实的高度抽象。类对象在程序中是通过一种抽象数据类型来描述......
  • 面向对象编程的六大原则个人总结(附代码)
    面向对象编程的六大原则个人总结(附代码)目录面向对象编程的六大原则个人总结(附代码)一、什么是单一职责原则?核心思想好处代码示例总结二、什么是里式替换原则?规则代码示例总结三、什么是迪米特法则?核心思想规则代码示例总结四、什么是开闭原则?理解代码示例总结五、什么是依赖倒......
  • JavaSE day01【复习回顾面向对象基础、继承、抽象类】测评
    选择题题目1(单选):下列关于Java中类与类之间的关系描述正确的是()选项:​ A.Java中类与类属于多继承,还可以多层继承​ B.Java中类与类属于实现关系,可以单实现也可以多实现​ C.Java中类与类属于实现关系,可以只能单实现​ D.Java中类与类属于单继承,......
  • 面向对象实战后的总结
    面向对象封装继承多态类对象(实例)方法消息面向对象编程:1.使用对象和对象之间的交互来设计系统,2.数据和相关的逻辑封装在一起什么是面向对象面向对象是:一种程序设计思想,它的核心概念是“对象”。“对象”是指具有特定属性和行为的实体,能够接收消息、处理消息并返回结果。......
  • C面向对象
    类类是C语言结构体,包含两种不同的特性:数据(属性)和行为(操作)行为是对数据(属性)的操作最简单的实现类的方法是使用文件作为封装边界,公共变量和方法在头文件内可见,实现文件中包含方法体、私有变量和方法。对象对象是类的实例,创建类的实例,就是创建了结构体的实例(实际上就是创建了......
  • 15,面向对象原型继承
    子类对象名.__proto__=父类对象名;varuse={name:'岳不群',age:123,ff:function(){console.log(this.name+'在跑步');}};varniao={fei:function(){console.log(this.name+'在飞');}};varliyu......