Python使用注意点

1、同类方法的调用
import webdriver
class myclass(object):
	def __inti__(self):
		self.driver=webdirver.Chrome()#定义全局参数
	def eg_method1(self):
		a=1
	def eg_method2(self)
		self.eg_method1
		print(a)
if __name__=="__main__":
	myclass=mysclass()
	myclass.eg_methond2
2、python字符格式互转

字符串与字典的转换

# 字符串转字典情况
a = "{'a':1,'b':1}"
# 方法一
b = eval(a)
print (type(b))
# 方法二
exec('c='+a)
print(type(c))

字典与列表之间的转换

# 列表合成字典
list_str=["a","b","c"]
list_int=[1,2,3]
dict_int_str={}
for i in range(len(list_int)):
    dict_int_str[list_int[i]]=list_str[i]
print (dict_int_str)
# 字典拆分列表
dict_d={1:'张三',2:'王五'}
list_key=list(dict_d.keys())
list_value=list(dict_d.values())
print(list_key)
print(list_value)
3、python获取变量字符类型
a='1'
print(type(a)) # 直接打印字符类型
print(isinstance(a,str)) #判断a的字符类型是否为str,打印布尔值
4、python的random使用
import random
# 1.随机取出列表的数据
list=['java','python','php','go']
print(random.choice(list))
# 2.随机取出字典的数据
dict={'a':'java','p':'python','g':'go'}
dict_key=random.sample(dict.keys(),1) #随机取出一个键
dict_key=dict_key[0] #将取出的键由列表格式换成字符串格式
dict_value=dict_key[dict_key] #取出键对应的值
5、Ubuntu中使用python3

Ubuntu系统自带python,若没有python安装命令为

sudo apt install python3
sudo apt install python3-pip

执行python命令及pip命令也需要带上3.如

pip3 install Django
python manage.py runserver
6、pygame初始化及基础操作
import pygame
# 初始化
pygame.init()
# 创建窗口,分辨率、特性、色深
    screen = pygame.display.set_mode([500,600])
    # 窗口名称
    pygame.display.set_caption("自动化测试工具")
    done = False
    # 填充白色
    screen.fill(WHITE)
    # 画一条直线,所在窗口,颜色,起点,终点,blend(混合?)
    pygame.draw.aaline(screen, GREEN, [0, 50], [50, 80], True)
    # 画矩形,所在窗口,颜色,[横坐标,纵坐标,横坐标长度,纵坐标长度],线粗
    pygame.draw.rect(screen, BLUE, [100, 200, 10, 20], 1)
    # 执行从填充白色的操作
    pygame.display.flip()
7、python中的异常处理
try:
	# 检测异常代码片段
except:
	# 发生异常,需要执行的代码片段
else:
	# 未发生异常时,需要执行的代码片段
finally:
	# 不管是否异常,最终需要执行的代码片段
8、字符串的操作

①将字符串格式修改为首字母大写

str1 = "abcABC1"
print(str1.capitalize())
# 结果为:Abcabc1

②字符串大小写替换

str1 = "abcABC1"
print(str1.swapcase())
# 结果为:ABCabc1

③截取字符串的两个引号之间的数据

a = "text:'test1']"
b = "[text:'test2']"
print(a[6:-1],b[6:-1])
9、selenium中的坑

用selenium获取标签的数量时,遇到"object type of ‘element’ has no len() "的错误,百度未找到答案

menubody = driver.find_element(By.XPATH, "//div[text()='供应商名称']/../../../../../../../tbody")
rowstr = menubody.find_element_by_tag_name('tr')
rows = int(len(rowstr))

将上述rowstr的类型打印出来,发现他是class element类型,无法使用len()函数,于是又翻了一下官方文档,才发现有find_elements方法。增加s后,rowstr的字符类型变为了list,即解决了报错,达到了目的

menubody = driver.find_element(By.XPATH, "//div[text()='供应商名称']/../../../../../../../tbody")
rowstr = menubody.find_elements_by_tag_name('tr')
rows = int(len(rowstr))
10、面向对象理解
class car():
    #声明成员属性---可以认为是一系列的 变量
    wheelNO=4  # 声明在class 定义下第一层的 属性(变量) 属于整个类 所用。 使用时  要通过类名称加点号 调用。 例:car.wheelNO

    #声明类的构造方法:   #  构造方法 是一个class中必须存在的方法, 作用: 1.实例化对象(创建该类型的实际数据) 2.为实例进行属性的 初始化
    def __init__(self,co='黑色',ty='轿车',br='BYD'):
        self.color = co  #  self 表示实例(类的每一个实际数据)自身。  self.变量名   声明的是 属于实例自身的 成员属性
        self.type = ty
        self.brand = br        
    
    #声明成员方法(本质是函数)  。  方法中通常第一个参数是"self", 代表该方法  属于该类的实例的 方法
    def move(self,x,y):
        print('本实例',id(self), '移动到的新坐标是',x,y)
        self.v1=100 
        #  如果写了 上面这句话, 语法上表示: 当该类的 某一个实例 调用了move方法后, 这个实例会增加一个成员 属性v1 且值为100
        #  但在实例 没调用move方法 之前 , 实例自身是没有v1属性的
        # 注: 上面的  "self.v1" 仅仅为了说明 语法规则, 不代表v1 在 car类中 有什么具体 功能意义。
        
    def printSelf(self):
        print(self.brand,self.color,self.type)   # 在本方法中 通过"self.属性名"  表示访问本实例的 其他成员
        # 以上代码 可以表示  类的实例成员  之间的相互访问
        
    # 不属于 实例的方法
    # 1)静态成员方法
    @staticmethod     # 在类的成员方法定义上一行 加上  “@名称 ” 这种语法格式  称为“装饰器”
    def roolback():
        print('这是 该类的静态方法')   #静态方法  通过类名称 加点号 调用, 例: ca.roolback()
        
    # 2)类方法
    @classmethod 
    def clsM1(cls):   # 也通过类名称 调用的方法
        print('属于类自身的方法')        

# 创建car类型的 实例(该类型的 实际数据)
c1=car() # 创建car类的实例 会自动的 调用类中的 " __init__()" 方法,  调用形式上的变化 遵守函数参数 语法规则
         # 例如上面这行, 调用了__init__方法   但没有传递任何参数, 表示使用该方法的 默认参数值
c2=car('白色','SUV',"BMW")
c3=car(ty="MPV",co='灰色',br="五菱")

c1.printSelf()
c2.printSelf()
# print(c1.v1)

c3.move(10, 20)
c2.move(100, 200)
print(c2.v1,c3.v1)

# 调用 类的成员,   它们不属于 类的实例, 只属于类自身, 只能通过  类名称  调用
print(car.wheelNO)
car.roolback()
car.clsM1()
11、面向对象子父级理解

class A(object):   # 定义 父类(超类 --super class)
    def __init__(self):
        self.v1=10
        self.__v2=20
        
    def AObjM1(self):
        print('AObjeM1')
        
    def __AObjM2(self):
        print('AObjM2')
        
#定义 子类
class B(A):
    def __init__(self):  # 如果 子类单独写了 构造方法  将会覆盖  父类继承过来的  构造方法, 此时父类的构造方法  不会 自动执行
        self.v3=30
        super().__init__() # 明确 声明调用 父类的构造方法
    
    def BObjeM1(self):
        print('BObjeM1')
        #self.__AObjM2()   #  父类的私有 成员无法继承到 子类中,  这句是会报错的
#         print(self.__v2)
        print(self.v1,self.v3)
        
b1=B() # 创建子类实例
b1.BObjeM1()
print(b1.v1)
b1.AObjM1()
获取dict中第n个键值对的value
dict1={'a':'a','b':'b','c':'c'}
value_n=dict1[dict1.keys()[1]]
# 当py升级后发现上述情况竟然会报错,print了dict.keys()的类型才知道不正确
value_n=dict1[list(dict1.keys())[1]]

PS:还在疯狂学习python中,若不正确,还请指教。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值