一.执行类中的方法错误
错误提示:TypeError: demo01() missing 1 required positional argument: 'self'
错误代码:
class Demo:
def demo01(self):
print("demo")
Demo.demo01()
正确代码:
class Demo:
def demo01(self):
print("demo")
de=Demo()
de.demo01()
错误原因及解释:
这个错误提示“TypeError: get_token() missing 1 required positional argument: 'self'
”是Python中非常常见的错误,它通常发生在尝试以非实例方法的方式调用一个实例方法时。
在Python中,实例方法的第一个参数总是self
,它代表实例本身。当你创建一个类的实例并调用它的方法时,Python会自动将该实例作为第一个参数传递给该方法。但是,如果你尝试直接从类本身而不是从实例调用该方法,你需要手动传递该实例。
二.一个类中的不同的方法,其中一个方法要引用另一个方法的变量的办法
方法一、将方法中的变量转换为类变量,通过引用类变量。
需要更改的代码
class Demo:
def demo01(self):
de01="demo01"
def demo02(self):
de02=de01
更改后代码
class Demo:
de01=""
def demo01(self):
Demo.de01="demo01"
def demo02(self):
de02=Demo.de01
print(de02)
#必须执行demo1将变量传到类变量
Demo().demo01()
Demo().demo02()
方法二、将方法中产生的变量返回,通过调用方法引用变量
需要更改的代码
class Demo:
def demo01(self):
de01="demo01"
def demo02(self):
de02=de01
更改后代码
class Demo:
def demo01(self):
de01="demo01"
return de01
def demo02(self):
de02=self.demo01()
print(de02)
Demo().demo02()
三.python中在字符串中引用变量
例如,当需要执行下边函数时,需要填写一个sql,sql中createtime需要引用已经存在的变量。但是双引号中是字符串,引用变量后就会失效解决办法:
format
是一个字符串方法,用于字符串格式化。它允许你将变量插入到字符串的占位符中,从而创建出动态内容的字符串。
# 使用位置参数
name = "Alice"
age = 30
greeting = "My name is {} and I am {} years old.".format(name, age)
print(greeting) # 输出: My name is Alice and I am 30 years old.
# 使用关键字参数
greeting = "My name is {name} and I am {age} years old.".format(name=name, age=age)
print(greeting) # 输出: My name is Alice and I am 30 years old.
# 使用填充和对齐
text = "{:>10}".format("hello")
print(text) # 输出: hello (字符串右对齐,总宽度为10)
# 使用宽度和精度
number = 3.14159
formatted_number = "{:.2f}".format(number)
print(formatted_number) # 输出: 3.14 (保留两位小数)
其他格式化方法
在Python中,f
是一个特殊的语法,用于格式化字符串(也称为“f-string”)。f
或F
紧随在字符串开头的引号之后,表示这是一个格式化字符串。在字符串内部,大括号{}
可以用来嵌入表达式,这些表达式会在运行时被计算并替换为大括号内的值。
例如:
python
name = "Alice"
age = 25
formatted_string = f"My name is {name} and I am {age} years old."
在这个例子中,formatted_string
将会是字符串 "My name is Alice and I am 25 years old."
。{name}
会被替换为变量name
的值,{age}
会被替换为变量age
的值。
使用百分号格式化:
python
复制
print("请求发生异常:%s" % e)
在Python的早期版本中,您可以使用百分号%
来格式化字符串。对于不同的数据类型,您需要使用不同的格式化符号,例如%s
用于字符串,%d
用于整数,%f
用于浮点数等。
使用字符串拼接:
python
复制
print("请求发生异常:" + str(e))
您可以通过将异常对象e
转换为字符串,然后使用加号+
来拼接字符串。这种方法比较简单,但当您需要拼接多个变量时,代码可能会变得比较复杂和不清晰。
四.resquests发送请求时证书验证失败的解决办法
1.错误信息
requests.exceptions.SSLError: HTTPSConnectionPool(host='api.klwk.ren', port=443): Max retries exceeded with url: /blade-auth/oauth/token (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)')))
2.错误原因:
这个错误是由于SSL证书验证失败导致的。当您尝试使用requests
库进行HTTPS请求时,Python会尝试验证服务器的SSL证书。如果证书不受信任或者证书链不完整,Python会抛出SSLError
。
错误消息中的CERTIFICATE_VERIFY_FAILED
表明Python无法验证服务器的证书。这可能是因为服务器使用了自签名证书,或者证书链中缺少中间证书。
3.解决办法
忽略SSL证书验证: 这是一个危险的操作,因为它会使您的连接容易受到中间人攻击。仅在信任的环境中且您完全了解风险的情况下使用此方法。
requests.get('https://api.klwk.ren', verify=False)
忽略证书会有风险,还是会报一个错误
C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-packages\urllib3\connectionpool.py:1095: InsecureRequestWarning: Unverified HTTPS request is being made to host 'api.klwk.ren'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#tls-warnings
warnings.warn(
这个警告是因为您在忽略SSL证书验证的情况下发出了HTTPS请求。urllib3
库(requests
库底层使用的HTTP客户端)默认会显示这个警告,以提醒您这种做法存在安全风险。
警告信息指出,您正在向api.klwk.ren
发送未经验证的HTTPS请求,并建议您添加证书验证。这是为了防止中间人攻击和其他安全威胁。
import requests
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
response = requests.get('https://api.klwk.ren', verify=False)