面向对象的出现开发中,经常会在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)