下面是一个使用hasattr
和getattr
判断并调用方法属性的示例代码,实现了一个简单的FTP服务器:
class FtpServer:
def serve_forever(self):
# 服务器逻辑
filename = "example.txt"
if hasattr(self, "get"):
get_method = getattr(self, "get")
get_method(filename)
if hasattr(self, "put"):
put_method = getattr(self, "put")
put_method(filename)
def get(self, filename):
# 实现从服务器下载文件
print(f"Downloading file '{filename}' from server...")
def put(self, filename):
# 实现向服务器上传文件
print(f"Uploading file '{filename}' to server...")
# 创建一个FtpServer实例
ftp_server = FtpServer()
# 调用serve_forever方法
ftp_server.serve_forever()
-
在这个示例中,
FtpServer
类包含了serve_forever
、get
和put
三个方法。 -
serve_forever
方法是服务器的主逻辑,它首先使用hasattr
检查实例对象是否具有get
和put
方法属性。如果有,就使用getattr
获取相应的方法属性,并传递文件名作为参数进行调用。 -
get
方法和put
方法分别用于实现从服务器下载文件和向服务器上传文件的功能。在本示例中,只是简单地打印一条消息来模拟实际操作。 -
最后,我们创建一个
FtpServer
实例并调用其中的serve_forever
方法。在实际情况中,您可以根据需求进行更复杂的操作。 -
这段代码只是一个简单的示例,如果您要在实际应用中使用FTP服务器功能,请确保了解并遵守相关的法律法规和安全性规定,并适当地处理文件访问权限和安全性设置。