鱼C论坛

 找回密码
 立即注册
查看: 2921|回复: 4

关于类里面的函数定义

[复制链接]
发表于 2022-4-24 23:06:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么我定义类的方法的时候,这种嵌套函数怎么定义不会出错啊。。。 我一把load_encode这个函数放在外部跟url_read并列的时候 就能运行了。。。

import chardet as cha ##查询编码器
import urllib.request

class Urlread:
    def url_read(self, html = ''):
        def load_encode(self):
            '''读取网站编码器信息,并相应解码'''
            self.encoding_method = cha.detect(self.response)['encoding']
            if self.encoding_method == 'GB2312' :
                self.encoding_method = 'GBK'
            return self.encoding_method
        self.html = html
        self.response = urllib.request.urlopen(self.html).read() #读取网站内容
        self.load_encode()
        return self.response.decode(self.encoding_method)
   
u = Urlread()
print(u.url_read(r'http://www.fishc.com'))   
        
捕获.JPG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-25 08:17:55 | 显示全部楼层
import chardet as cha ##查询编码器
import urllib.request

class Urlread:
    def url_read(self, html = ''):
        def load_encode(self):
            '''读取网站编码器信息,并相应解码'''
            self.encoding_method = cha.detect(self.response)['encoding']
            if self.encoding_method == 'GB2312' :
                self.encoding_method = 'GBK'
            return self.encoding_method
        self.html = html
        self.response = urllib.request.urlopen(self.html).read() #读取网站内容
        load_encode(self)                                    # 修改这一行
        return self.response.decode(self.encoding_method)
    
   
u = Urlread()
print(u.url_read(r'http://www.fishc.com'))   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-25 10:15:05 | 显示全部楼层

噢噢噢噢! 这种地方就不用加实例了对吧, 因为它已经是url_read() 这个方法的内嵌函数了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-25 10:23:19 | 显示全部楼层
Victor0321 发表于 2022-4-25 10:15
噢噢噢噢! 这种地方就不用加实例了对吧, 因为它已经是url_read() 这个方法的内嵌函数了

对的。内嵌相当于局部,就跟局部变量一样前面不用加 self
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-25 10:53:47 | 显示全部楼层
isdkz 发表于 2022-4-25 10:23
对的。内嵌相当于局部,就跟局部变量一样前面不用加 self

0.那我内嵌函数里的局部变量是不是也都可以不用加实例self.,比如说self.encoding_method 这个地方,即使外部函数要用到,也不需要跟self 链接对吧!

1.然后这种内嵌函数的内层函数,我从g整体外部框架内都无法访问的对吧!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 14:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表