#/urn/bin/env python
#-*- coding:utf-8 -*-
class Function_demo(object):
name = ‘demo‘
def run(self):
return "hello function "
if hasattr(Function_demo,‘addr‘):
addr = getattr(Function_demo,‘addr‘)
print(addr)
else:
addr = getattr(Function_demo,‘addr‘,setattr(Function_demo,‘addr‘,‘首都北京‘))
print(addr)
#方法二 :判断一个对象的属性是否存在,若不存在,则添加该属性
class Function_demo(object):
name = ‘demo‘
def run(self):
return "hello function "
if not hasattr(Function_demo,‘age‘):
setattr(Function_demo,‘age‘,18)
print(getattr(Function_demo,‘age‘))
#学习__dict__函数
class A(object):
a = 0
b = 1
def __init__(self):
self.a = 2
self.b = 3
def test(self):
print(‘a normal func‘)
@staticmethod
def static_test(self):
print(‘a static func‘)
@classmethod
def class_test(self):
print(‘a calss func‘)
obj = A()
print(A.__dict__)
print(obj.__dict__)
#{‘__module__‘: ‘__main__‘, ‘a‘: 0, ‘b‘: 1, ‘__init__‘: <function A.__init__ at 0x0000015E6718E8B0>,
# ‘test‘: <function A.test at 0x0000015E6718E940>,
# ‘static_test‘: <staticmethod object at 0x0000015E670D8430>,
# ‘class_test‘: <classmethod object at 0x0000015E670E83A0>,
# ‘__dict__‘: <attribute ‘__dict__‘ of ‘A‘ objects>,
# ‘__weakref__‘: <attribute ‘__weakref__‘ of ‘A‘ objects>, ‘__doc__‘: None}
#{‘a‘: 2, ‘b‘: 3}
class Parent(object):
a = 0
b = 1
def __init__(self):
self.a = 2
self.b = 3
def p_test(self):
pass
class Child(Parent):
a = 4
b = 5
def __init__(self):
super(Child, self).__init__()
self.a = 6
self.b = 7
def c_test(self):
pass
p = Parent()
c = Child()
print(Parent.__dict__)
print(Child.__dict__)
print(p.__dict__)
print(c.__dict__)
# {‘__module__‘: ‘__main__‘, ‘a‘: 0, ‘b‘: 1, ‘__init__‘: <function Parent.__init__ at 0x0000023B1CFBE8B0>, ‘p_test‘: <function Parent.p_test at 0x0000023B1CFBE940>, ‘__dict__‘: <attribute ‘__dict__‘ of ‘Parent‘ objects>, ‘__weakref__‘: <attribute ‘__weakref__‘ of ‘Parent‘ objects>, ‘__doc__‘: None}
# {‘__module__‘: ‘__main__‘, ‘a‘: 4, ‘b‘: 5, ‘__init__‘: <function Child.__init__ at 0x0000023B1CFBE9D0>, ‘c_test‘: <function Child.c_test at 0x0000023B1CFBEA60>, ‘p_test‘: <function Child.p_test at 0x0000023B1CFBEAF0>, ‘__doc__‘: None}
# {‘a‘: 2, ‘b‘: 3}
# {‘a‘: 6, ‘b‘: 7}
#__str__()函数学习
class ss1(object):
def __init__(self,age,name):
self.age = age
self.name = name
def __str__(self):
return str(self.age)+",,wozenmezhemeshuai,,"+self.name
if __name__=="__main__":
s1= ss1(21,‘aitebao‘)
print(s1)
#输出结果为:21,,wozenmezhemeshuai,,aitebao
class ss2:
def __init__(self,age,name):
self.age = age
self.name = name
if __name__=="__main__":
s2 = ss2(21,‘aitebao‘)
print(s2)
#输出结果为:<__main__.ss2 object at 0x000001838A330D60>
__new__()函数与__init__()函数学习
class A(object):
def __new__(cls):
return object.__new__(cls)
def __init__(self):
self.val = 0
#可以看到,在__new__的阶段就已经创建了对象,然后__init__只是执行初始化操作而已。
class A(object):
def __new__(cls):
return 0
def __init__(self):
self.val = 0
a = A()
print(a)
#输出结果为:0
#因为此时创建的对象是一个int,因此不会再执行A的__init__函数
class A(object):
def __call__(self,x):
print(‘__call__ called ,print x:‘,x)
a = A()
a(‘123‘)
#输出结果为:__call__ called ,print x: 123
import requests
class A(object):
def __init__(self):
pass
def __call__(self,url,method = ‘post‘,data= None):
if method == ‘get‘:
res = requests.get(url,data)
else:
res = requests.post(url,data)
return res
if __name__== ‘__main__‘:
url = ‘https://translate.google.com/‘
a = A()
print(a(url,‘post‘))
class Point:
def __init__(self):
pass
def __str__(self):
return ‘Point is (%s,%s)‘ %(self.x, self.y)
def __setitem__(self, key, value):
print(‘Called the __setitem__ function‘)
self.__dict__[key] = value
def __getitem__(self, item):
print(‘Called the __getitem__ function‘)
try:
if item == ‘x‘:
return ‘%s‘ %self.x
elif item == ‘y‘:
return ‘%s‘ %self.y
except:
return ‘There is no this item in class Point‘
def __delitem__(self, key):
del self.__dict__[key]
if __name__ == ‘__main__‘:
p = Point()
p[‘x‘] = 3
print(p[‘x‘])
p[‘y‘] = 6
print(p)
del p[‘x‘]
print(p[‘x‘])
#输出结果为:
# Called the __setitem__ function
# Called the __getitem__ function
# 3
# Called the __setitem__ function
# Point is (3,6)
# Called the __getitem__ function
# There is no this item in class Point
class Foo(object):
def __init__(self):
self.name = ‘xiaoli‘
self.age = 12
def __getitem__(self,item):
print(‘getitem‘.item)
return self.__dict__[item]
def __setitem__(self,key,value):
print(‘setitem‘)
self.__dict[key] = value
def __delitem__(self,key):
print(‘delitem‘)
self.__dict__[key]
f1 = Foo()
print(f1.__dict__)
print(f1.age,f1.name)
d = {‘one‘: 1, ‘two‘: 2, ‘three‘: 3}
print(d.items())
#输出结果为:dict_items([(‘one‘, 1), (‘two‘, 2), (‘three‘, 3)])
print(type(d.items()))
#输出结果为:<class ‘dict_items‘>
for i in d.items():
print(i)
#输出结果为:
# (‘one‘, 1)
# (‘two‘, 2)
# (‘three‘, 3)
import random
print(random.random())
输出结果为:0到1之间的浮点数
import random
print(random.uniform(1,9)) #输出结果为:随机生成1-9之间的浮点数
print(random.uniform(10,0)) #输出结果为:随机生成0-10之间的浮点数
import random
# # print(random.randint(2,7)) #输出结果为:随机生成一个2-7之间的整数
import random
print(random.randrange(10,30,2))
print(random.choice(range(10,30,2)))
import random
# # # lst= [‘python‘,‘C‘,‘C++‘,‘javascript‘,‘perl‘]
# # # str1 = (‘I love python‘)
# # # print(random.choice(lst))
# # # print(random.choice(str1))
import random
p = [‘A‘,‘B‘,‘C‘,‘D‘,‘E‘]
random.shuffle(p) #请注意其改变的是原序列 ,如果写成print(random.shuffle(p)) 其返回值为None
print(p)
import random
lst = [1,2,3,4,5,6]
print(random.sample(lst,4))
print(lst)
import os
print(os.getcwd()) #获取当前工作的路径
print(os.listdir(r‘C:\Users\Lenovo.LAPTOP-C8NNKEAA\PycharmProjects\learn_python\day24‘))
import os
print(os.listdir(r‘C:\Users\Lenovo.LAPTOP-C8NNKEAA\PycharmProjects\learn_python\day24‘))
os.remove(‘log.py‘)
print(os.listdir(r‘C:\Users\Lenovo.LAPTOP-C8NNKEAA\PycharmProjects\learn_python\day24‘))
print(os.path.split(‘C:\\Users\\Lenovo.LAPTOP-C8NNKEAA\\PycharmProjects\\learn_python\\abc.txt‘))
import os
print(os.path.isdir(os.getcwd())) #返回结果为:True 判断是否是一个目录
print(os.path.isfile(‘abc.txt‘)) #返回结果为:True 判断是否是一个文件
print(os.path.exists(os.getcwd())) #返回结果为:True 判断目录是否真实存在
print(os.path.exists(‘log.py‘)) #返回结果为:False 判断目录是否真实存在
print(os.path.abspath(‘abc.txt‘))
#返回结果为:C:\Users\Lenovo.LAPTOP-C8NNKEAA\PycharmProjects\learn_python\day24\abc.txt 获取文件的绝对路径
print(os.path.dirname(‘C:\\Users\\Lenovo.LAPTOP-C8NNKEAA\\PycharmProjects\\learn_python\\day24\\abc.txt‘))
#返回结果为:C:\Users\Lenovo.LAPTOP-C8NNKEAA\PycharmProjects\learn_python\day24 返回文件路径
print(os.path.splitext(‘a.txt‘)) #输出结果为:(‘a‘, ‘.txt‘) 分离文件名和拓展名
print(os.path.join(‘c:\\Python‘,‘a.txt‘)) #输出结果为:c:\Python\a.txt 将目录和文件名拼接起来
print(os.path.basename(‘c:\\Python\\a.txt‘)) #输出结果为:a.txt 返回文件名
import sys
print(sys.path)
for item in sys.path:
print(item)
#加密
import hashlib
obj = hashlib.md5(‘adqdacadreqfdc‘.encode(‘utf-8‘))
obj.update(‘小马过河‘.encode(‘utf-8‘))
print(obj,type(obj))
result = obj.hexdigest()
print(result)
#没加盐前的结果:24f67b0f6d02adc8867d612e0e0fc40a
#加盐后的结果:ace8fb02291cbcdd04a436b3b6e8f2ed
用hashlib做成加密函数
import hashlib
def get_md5(data):
obj = hashlib.md5(‘adsjklaoenxadw‘.encode(‘utf-8‘))
obj.update(‘小马过河‘.encode(‘utf-8‘))
result = obj.hexdigest()
return result
val = get_md5(‘1234353‘)
print(val)
应用场景案例:用户账号密码登录,对明文密码进行加密
import hashlib
USER_LIST= []
def get_md5(data):
obj = hashlib.md5(‘adsjklaoenxadw‘.encode(‘utf-8‘))
obj.update(‘小马过河‘.encode(‘utf-8‘))
result = obj.hexdigest()
return result
def register():
while True:
print(‘******************用户注册******************‘)
name = input(‘请输入用户名:‘)
if name.upper()==‘N‘:
return
pwd = input(‘请输入密码:‘)
tmp = {‘username‘:name,‘password‘:get_md5(pwd)}
USER_LIST.append(tmp)
def login():
print(‘******************用户登录******************‘)
name = input(‘请输入用户名:‘)
pwd = input(‘请输入密码:‘)
for item in USER_LIST:
if item[‘username‘] ==name and item[‘password‘] ==get_md5(pwd):
return True
register()
result = login()
print(result)
if result:
print(‘恭喜你登录成功‘)
else:
print(‘登录失败‘)
原文:https://www.cnblogs.com/limin1027/p/13383878.html