python跨类调用

面向对象的出现开发中,经常会在A类里面调用B类的方法,python中这个功能的实现方式如下:

B类:

class Help:

    def myLog(self, info):
        print(info)

A类作为发起调用的主类(类似Java中带有main()方法的java文件),实现方式如下:

class Main:
    def callLog(self):
        print("来一波打印")
        Help().myLog("马尼拉的天空很蓝,云层很低")

if __name__ == "__main__":
    main = Main()
    main.callLog()

主类中调用其他类中staticmethod修饰的静态类方法:

staticmethod修饰的静态类方法:

class ToolsUtils:
    @staticmethod
    def utilsPrint(info):
        print(info)

然后我们在主类(A)中调用ToolsUtils中的utilsPrint方法:

if __name__ == "__main__":
    main = Main()
    main.callLog()
    ToolsUtils.utilsPrint("在主類中的“main”方法裡面直接調用")

静态变量的直接调用:

if __name__ == "__main__":
main = Main()
main.callLog()
ToolsUtils.utilsPrint("在主類中的“main”方法裡面直接調用")
print(Constant.printInfo)
print(Constant.Variables)

定义静态变量的Constant类如下:

printInfo = "www.ifeng.com"
Variables = "菲律賓這邊有很多的華人:菲律賓本地華人、馬來華人、中國台灣華人、中國大陸華人"

在这里插入图片描述
完整代码如下:
发起调用的主类:

import os
import requests	
from month.ToolsUtils import ToolsUtils
from month.help import Help
from urllib.request import urlretrieve
	
os.makedirs('./image/', exist_ok=True)
IMAGE_URL = "http://image.nationalgeographic.com.cn/2017/1122/20171122113404332.jpg"
ImageUrl = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1516371301&di=d99af0828bb301fea27c2149a7070d44&imgtype=jpg&er=1&src=http%3A%2F%2Fupload.qianhuaweb.com%2F2017%2F0718%2F1500369506683.jpg";	

class Main:
    def callLog(self):
        print("来一波打印")
        Help().myLog("马尼拉的天空很蓝,云层很低")
        ToolsUtils.utilsPrint("类似Java中的静态方法的调用")

    def urllib_download(self):
        urlretrieve(IMAGE_URL, 'D:\\img1.png')

    def request_download(self):
        r = requests.get(IMAGE_URL)
        with open('D:\\img2.png', 'wb') as f:
            f.write(r.content)

    def chunk_download(self):
        import requests
        r = requests.get(IMAGE_URL, stream=True)
        with open('D:\\img3.png', 'wb') as f:
            for chunk in r.iter_content(chunk_size=32):
                f.write(chunk)

if __name__ == "__main__":
    main = Main()
    main.callLog()
    ToolsUtils.utilsPrint("在主類中的“main”方法裡面直接調用")
    main.urllib_download()
    main.request_download()
    main.chunk_download()

包含有staticmethod修饰的方法的类:

class ToolsUtils:
    @staticmethod
    def utilsPrint(info):
        print(info)

普通食物类和方法:

class Help:
    def myLog(self, info):
        print(info)
原创文章 118 获赞 149 访问量 9万+

猜你喜欢

转载自blog.csdn.net/haoyuegongzi/article/details/104050249