赞
踩
类是封装对象的属性和行为的载体,具有相同属性和行为的实体被称为类;这是一个抽象的概念
将对象的属性和行为封装起来,类是它的载体;类会隐藏其实现细节;封装思想保证了内部数据结构的完整性,该类的用户不能直接看到该类中的数据结构,只能执行该类允许公开的数据,避免了外部对内部数据产生影响
实现重复利用的重要手段,复用了父类的属性和行为的同时有可以添加子类的特有属性和行为
将父对象应用于子类的特征就是多态
- class 类名 :
- "类的帮助信息" #文档说明,注释
- statement #类体
- class ClassName: #类定义
- print("创建类的实例")
- HiClass = ClassName() #创建类的实例
- class Geese:
- def __init__(self,a,b,c):
- print(a,b,c)
- wildGoose = Geese('1','2','3')
- class Geese:
- def Fun(self,abc):
- print(abc)
- wildGoose = Geese()
- wildGoose.Fun('123')
-
- class SelfTest:
- def test(self,CS):
- print(CS)
- def FJ(self):
- self.test("CS")
- HiSelfTest = SelfTest()
- class Geese:
- shux = 'shux'
- def __init__(self):
- print(self.shux)
- print(Geese.shux)
- wildGoose = Geese()
- print(wildGoose.shux) # 通过对象访问
- print(Geese.shux) # 通过类访问
Python并没有对方法和属性的访问权限进行限制;可以方法或属性前面加单下划线、双下划线,可以在首尾加双下划线:
首尾双下划线表示定义特殊方法,一般是系统定义名字。如:__init__
以单下划线开头的表示protected(保护)类型的成员,只允许类本身和子类进行访问,*但不能使用“from module import ”语句导入
双下划线表示private(私有)类型成员,只允许定义该方法的类本身进行访问,而且不能通过类的实例进行访问,但是可以通过“类的实例名._类名__xxx”方式访问
- class Swan:
- _neck_swan='天鹅类' # 保护属性
- def __init__(self):
- print("__init__():",Swan._neck_swan) # 在实例方法中访问保护属性
- swan=Swan() # 创建Swan实例
- print("直接访问:",Swan._neck_swan) #保护属性可以通过类名访问
- print("直接访问:",swan._neck_swan) #保护属性可以通过实例名访问
- class Swan:
- __neck_swan='天鹅类' # 私有属性
- def __init__(self):
- print("__init__():",Swan.__neck_swan) # 在实例方法中访问私有属性
- swan=Swan() # 创建Swan实例
- print("加入类名:",swan._Swan__neck_swan) # 私有属性可以通过“类的实例名._类名__xxx”方式访问
- print("直接访问:",swan.__neck_swan) # 私有不能属性可以通过实例名访问,会报错
这是一个特殊方法,类创建时会自动执行它,它必须包含一个self参数且该参数位于第一个;self参数指向实例本身的引用,用于访问类中的属性和方法。方法在调用是自动传递实际参数self
- class Geese:
- def __init__(self):
- print("创建 `__init__(self)`——这是一个构造方法")
- wildGoose = Geese()
- class SelfTest:
- def test(self,CS):
- print(CS)
- HiSelfTest = SelfTest()
- HiSelfTest.test("你好啊self") #对的,self是对象本身且自动传递,无需手动传递
- # SelfTest.test("你好啊self") #错的,没有传递对象本身
- SelfTest.test(HiSelfTest,"你好啊self") #对的,手动传递对象本身
- class SelfTest:
- def test(self,CS):
- print(CS)
- def FJ(self):
- self.test("CS")
- HiSelfTest = SelfTest()
讲解链接:https://www.bilibili.com/video/BV1rB4y1u7mT/?spm_id_from=333.337.search-card.all.click
- import random
-
- def EditNumber(content):
- with open(file='number.txt', mode="a", encoding='utf-8') as file_s:
- # file —— 文件路径;mode —— 模式,即是写还是读等;encoding —— 字符集
- file_s.write(content + '\n') # 写入内容
- file_s.close() # 关闭文件
-
- array = ['131','132','134','135','136','137','138','139','147','150','151','152','157','158','159','178','182','183','184','187','188','198','130','131','132','155','156','166','185','186','145','176','133','153','177','173','180','181','189','199']
- numberArr=[]
- for i in range(0,100):
- num=['0','1','2','3','4','5','6','7','8','9']
- number=random.choice(array)+''.join(random.sample(num, 8))
- numberArr=list(set(numberArr))
- numberArr.append(number)
- i=len(numberArr)
- for itme in numberArr:
- EditNumber(itme)
random.choice(array)列表中随机取出一个值,random.sample(num, 8)列表中随机取出八个值;list(set(numberArr))去重后转为列表;numberArr.append(number)向列表添加值
***主要用来创建伪数据***
清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/
豆瓣:http://pypi.douban.com/simple/
- from faker import Faker
- #创建对象,默认生成的数据为为英文,使用zh_CN指定为中文
- fake = Faker('zh_CN')
- print(fake.name())#随机生成姓名
- print(fake.address())#随机生成地址
- print(fake.phone_number())#随机生成电话号码
- print(fake.pystr())#随机生成字符串
- print(fake.email())#随机生成邮箱地址
- for i in range(10):
- print(fake.name())#随机生成10个姓名
- from faker import Faker
-
- fake = Faker('zh_CN')
- numberArr=[]
-
- def EditNumber(content):
- with open(file='number.txt', mode="a", encoding='utf-8') as file_s:
- # file —— 文件路径;mode —— 模式,即是写还是读等;encoding —— 字符集
- file_s.write(content + '\n') # 写入内容
- file_s.close() # 关闭文件
-
- for i in range(0,100):
- numberArr = list(set(numberArr))
- numberArr.append(fake.phone_number())
- i=len(numberArr)
- for itme in numberArr:
- EditNumber(itme)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。