python 新手遇到的问题
作为新手,我把之前遇到的问题贴出来
错误提示1: TypeError: unbound method a() must be called with A instance as first argument (got nothing instead)
class A:
def a(self):
print("I'm a") A.a()
执行报错TypeError: unbound method a() must be called with A instance as first argument (got nothing instead)
表示没有对类进行实例, 改为:
class A:
def a(self):
print("I'm a")
obj=A()
obj.a()
或者:
class A:
@staticmethod # 静态方法
def a():
print("I'm a") A.a()
说明:
一是通过def定义的 普通的一般的,需要至少传递一个参数,一般用self,这样的方法必须通过一个类的实例去访问,类似于c++中通过对象去访问; 二是在def前面加上@classmethod,这种类方法的一个特点就是可以通过类名去调用,但是也必须传递一个参数,一般用cls表示class,表示可以通过类直接调用; 三是在def前面加上@staticmethod,这种类方法是静态的类方法,类似于c++的静态函数,他的一个特点是参数可以为空,同样支持类名和对象两种调用方式; |
在看一个例子:
class Person:
count = 0
def __init__(self):
self.name='Flay'
self.count+=1
Person.count +=2
print(self.count)
print(Person.count) if __name__ == '__main__':
p = Person()
#Person.name
输出:
1
2
因为self 是类本身属性, Person.count 表示count为类的静态属性
如果直接Person.name 会直接报错:AttributeError: class Person has no attribute 'name' 错误提示2:RuntimeError: super-class __init__() of type ani was never called
# -*- coding:utf8 -*-
from PyQt4.QtGui import *
import sys class ani(QWidget):
def __init__(self):
self.resize(10, 20) if __name__=='__main__':
app = QApplication(sys.argv)
window = ani()
window.show()
sys.exit(app.exec_())
报错原因:该类ani继承自QWidget,但没有给QWidget构造函数,如果类ani不继承任何基类可以这样:
class ani(object):
def __init__(self):
print('aaa') if __name__=='__main__':
win = ani()
所以,创建了一个名为 ani 的新类, 该类继承 QWidget 类。 因此我们必须调用两个构造函数——ani 的构造函数和继承类 QWidget 类的构造函数,代码改为如下:
from PyQt4.QtGui import *
import sys class ani(QWidget):
def __init__(self):
super(ani, self).__init__()
self.resize(10, 20) if __name__=='__main__':
app = QApplication(sys.argv)
window = ani()
window.show()
sys.exit(app.exec_())
错误3:You are using pip version 7.1.2, however version 8.1.2 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' comm and.
pip install *** 报错
解决办法:
C:\Python35\Scripts>easy_install.exe pip==8.1.
然后在安装包
C:\Python35>pip install C:\pypiwin32--cp35-none-win32.whl
错误4: Unable to find "/usr/include/python3.6m/pyconfig.h" when adding binary and data files.
使用pyinstaller.py 打包的时候提示找不到pyconfig.h 文件
解决办法; 安装python3-dev
sudo apt install python3-dev
原本/usr/include/python3.6m目录只有3个.h文件,安装python3-dev后该目录变为100多个.h文件,其中就包含pyconfig.h
问题5: pip修改镜像源
pip的镜像地址: https://pypi.org 因为地址在国外,pip install packages 慢的怀疑人生,或者出现timeout.此时可以考虑换成国内pypi镜像源
地址:https://pypi.doubanio.com/simple/
新建文件: ~./pip/pip.conf
填写index-url
[global]
index-url = https://pypi.doubanio.com/simple/
注意一点,地址是https,负债会提示: The repository located at pypi.doubanio.com is not a trusted or secure host and is being ignored. If this repository is available via HTTPS it is recommended to use HTTPS instead, otherwise you may silence this warning and allow it anyways with '--trusted-host pypi.doubanio.com'.
问题6: 字符串(str)列表(list)元组(tuple) 互相转换
mystr='x1y1'
mylist=['x2y2']
mytuple=('x3y3',) # ('x3y3') == <class 'str'>
相互转换
# 字符串 转 列表
Cmylist=[mystr]
print(Cmylist)
Cmylist=mystr.split('')
print(Cmylist)
# 字符串 转 元组
CmyTuple=(mystr,)
print(CmyTuple)
# 列表 转 字符串
Cmystr="".join(mylist) #"@" @连接符
print(Cmystr)
# 列表 转 元组
CmyTuple=tuple(mylist)
print(CmyTuple)
# 元组 转 列表
Cmylist=list(mytuple)
print(Cmylist)
输出:
['x1y1']
['x', 'y', '']
('x1y1',)
x2y2
('x2y2',)
['x3y3']
python 新手遇到的问题的更多相关文章
- (转)Python新手写出漂亮的爬虫代码2——从json获取信息
https://blog.csdn.net/weixin_36604953/article/details/78592943 Python新手写出漂亮的爬虫代码2——从json获取信息好久没有写关于爬 ...
- (转)Python新手写出漂亮的爬虫代码1——从html获取信息
https://blog.csdn.net/weixin_36604953/article/details/78156605 Python新手写出漂亮的爬虫代码1初到大数据学习圈子的同学可能对爬虫都有 ...
- Python 新手常犯错误
Python 新手常犯错误(第二部分) 转发自:http://blog.jobbole.com/43826/ 作用域 在这篇文章里,我们来关注作用域在Python被误用的地方.通常,当我们定义了一个全 ...
- python新手必躺的5大坑
python新手必躺的5大坑 对于Python新手来说,写代码很少考虑代码的效率和简洁性,因此容易造成代码冗长.执行慢,这些都是需要改进的地方.本文是想通过几个案列给新手一点启发,怎样写python代 ...
- python新手上车001
python新手上车001 一般建议: 1.下载:从https://www.python.org/downloads/windows/ python官网进行下载建议就从3.7.2开始吧(我从这个版本 ...
- Python新手学习raise用法
当程序出现错误时,系统会自动引发异常.除此之外,Python也允许程序自行引发异常,自行引发异常使用 raise 语句来完成. 很多时候,系统是否要引发异常,可能需要根据应用的业务需求来决定,如果程序 ...
- [Python]新手写爬虫全过程(已完成)
今天早上起来,第一件事情就是理一理今天该做的事情,瞬间get到任务,写一个只用python字符串内建函数的爬虫,定义为v1.0,开发中的版本号定义为v0.x.数据存放?这个是一个练手的玩具,就写在tx ...
- Python 新手常犯错误(第二部分)
转发自:http://blog.jobbole.com/43826/ 在之前几个月里,我教一些不了解Python的孩子来慢慢熟悉这门语言.渐渐地,我发现了一些几乎所有Python初学者都会犯的错误,所 ...
- Python新手学习基础之初识python——与众不同2
看完了Python的缩进,现在来看看Python的标识符.引号和注释. 标识符 关于Python的标识符,其实不是与众不同,只是有一定的规则. 标识符是编程时使用的名字.在Python中,标识符有几点 ...
随机推荐
- thinkphp修改和删除数据
1.在控制器MainController里面写一个方法,调用Nation表中的数据. public function zhuyemian() { $n = D("Nation"); ...
- vue自定义指令
Vue自定义指令: Vue.directive('myDr', function (el, binding) { el.onclick =function(){ binding.value(); } ...
- vim删除以#,空格开头的行
1,删除以#号开头的行: :g/^#/d :%s/^#.*\n 2,删除以空格开头的行: :g/^\s/d “\s代表空格” :%s/^\s.*\n 3,删除以空格#开头 ...
- jquery 返回顶部 兼容web移动
返回顶部图片 http://hovertree.com/texiao/mobile/6/tophovertree.gif 具体实现代码 <span id="tophovertree&q ...
- shell条件判断与流程控制
一 条件判断式语句 1.按文件类型进行判断 测试类型 作用 -b 文件 判断文件是否存在,并且是否为块设备文件(是块设备文件为真) -c 文件 判断文件是否存在,并且是否为字符设备文件(是字符设备设备 ...
- 详解SQL盲注测试高级技巧
原文地址: http://www.freebuf.com/articles/web/30841.html
- 在 .NET 中开发基于 Chrome 内核的浏览器-创建一个简单浏览器
首先在 http://www.cftea.com/tools/downloads/Cef.zip 下载文件包. 一.将文件解压拖入到 Visual Studio 对应的 WinForm 项目中. 二. ...
- 常用function() 收集
1.随机数生成函数(来源-微信支付demo案例) /** * * 产生随机字符串,不长于32位 * @param int $length * @return 产生的随机字符串 */ public st ...
- 将JAR包反编译,修改后重新打包(转)
将JAR包反编译,修改后重新打包(转) 在学习和开发JAVA项目中,我们经常会用到第三方提供的一些jar.使用这些第三方工具包,可以提高我们开发的效率,缩短开发的时间.有的第三方工具,提供具体的 ...
- iOS开发 Xcode8中遇到的问题及改动
iOS开发 Xcode8中遇到的问题及改动 新版本发布总会有很多坑,也会有很多改动. 一个一个填吧... 一.遇到的问题 1.权限以及相关设置 iOS10系统下调用系统相册.相机功能,或者苹果健康 ...