当前位置:   article > 正文

Python类的概念_python 类的定义

python 类的定义

类是封装对象的属性和行为的载体,具有相同属性和行为的实体被称为类;这是一个抽象的概念

封装

将对象的属性和行为封装起来,类是它的载体;类会隐藏其实现细节;封装思想保证了内部数据结构的完整性,该类的用户不能直接看到该类中的数据结构,只能执行该类允许公开的数据,避免了外部对内部数据产生影响

继承

实现重复利用的重要手段,复用了父类的属性和行为的同时有可以添加子类的特有属性和行为

多态

将父对象应用于子类的特征就是多态

定义类

  1. class 类名 :
  2. "类的帮助信息" #文档说明,注释
  3. statement #类体
类定义完成后还需要创建类的实例,否则它不会是真正的实例(相当没用)
  1. class ClassName: #类定义
  2. print("创建类的实例")
  3. HiClass = ClassName() #创建类的实例
给类指定参数
  1. class Geese:
  2. def __init__(self,a,b,c):
  3. print(a,b,c)
  4. wildGoose = Geese('1','2','3')
实例类的访问
  1. class Geese:
  2. def Fun(self,abc):
  3. print(abc)
  4. wildGoose = Geese()
  5. wildGoose.Fun('123')
  6. class SelfTest:
  7. def test(self,CS):
  8. print(CS)
  9. def FJ(self):
  10. self.test("CS")
  11. HiSelfTest = SelfTest()
类属性的访问
  1. class Geese:
  2. shux = 'shux'
  3. def __init__(self):
  4. print(self.shux)
  5. print(Geese.shux)
  6. wildGoose = Geese()
  7. print(wildGoose.shux) # 通过对象访问
  8. print(Geese.shux) # 通过类访问
限制访问

Python并没有对方法和属性的访问权限进行限制;可以方法或属性前面加单下划线、双下划线,可以在首尾加双下划线:

  1. 首尾双下划线表示定义特殊方法,一般是系统定义名字。如:__init__

  1. 以单下划线开头的表示protected(保护)类型的成员,只允许类本身和子类进行访问,*但不能使用“from module import ”语句导入

  1. 双下划线表示private(私有)类型成员,只允许定义该方法的类本身进行访问,而且不能通过类的实例进行访问,但是可以通过“类的实例名._类名__xxx”方式访问

保护属性
  1. class Swan:
  2. _neck_swan='天鹅类' # 保护属性
  3. def __init__(self):
  4. print("__init__():",Swan._neck_swan) # 在实例方法中访问保护属性
  5. swan=Swan() # 创建Swan实例
  6. print("直接访问:",Swan._neck_swan) #保护属性可以通过类名访问
  7. print("直接访问:",swan._neck_swan) #保护属性可以通过实例名访问
私有属性
  1. class Swan:
  2. __neck_swan='天鹅类' # 私有属性
  3. def __init__(self):
  4. print("__init__():",Swan.__neck_swan) # 在实例方法中访问私有属性
  5. swan=Swan() # 创建Swan实例
  6. print("加入类名:",swan._Swan__neck_swan) # 私有属性可以通过“类的实例名._类名__xxx”方式访问
  7. print("直接访问:",swan.__neck_swan) # 私有不能属性可以通过实例名访问,会报错

创建 __init__(self)——这是一个构造方法

这是一个特殊方法,类创建时会自动执行它,它必须包含一个self参数且该参数位于第一个;self参数指向实例本身的引用,用于访问类中的属性和方法。方法在调用是自动传递实际参数self

  1. class Geese:
  2. def __init__(self):
  3. print("创建 `__init__(self)`——这是一个构造方法")
  4. wildGoose = Geese()
  1. class SelfTest:
  2. def test(self,CS):
  3. print(CS)
  4. HiSelfTest = SelfTest()
  5. HiSelfTest.test("你好啊self") #对的,self是对象本身且自动传递,无需手动传递
  6. # SelfTest.test("你好啊self") #错的,没有传递对象本身
  7. SelfTest.test(HiSelfTest,"你好啊self") #对的,手动传递对象本身
  1. class SelfTest:
  2. def test(self,CS):
  3. print(CS)
  4. def FJ(self):
  5. self.test("CS")
  6. HiSelfTest = SelfTest()

讲解链接:https://www.bilibili.com/video/BV1rB4y1u7mT/?spm_id_from=333.337.search-card.all.click


随机生成100个电话号码,并写入txt文件

  1. import random
  2. def EditNumber(content):
  3. with open(file='number.txt', mode="a", encoding='utf-8') as file_s:
  4. # file —— 文件路径;mode —— 模式,即是写还是读等;encoding —— 字符集
  5. file_s.write(content + '\n') # 写入内容
  6. file_s.close() # 关闭文件
  7. 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']
  8. numberArr=[]
  9. for i in range(0,100):
  10. num=['0','1','2','3','4','5','6','7','8','9']
  11. number=random.choice(array)+''.join(random.sample(num, 8))
  12. numberArr=list(set(numberArr))
  13. numberArr.append(number)
  14. i=len(numberArr)
  15. for itme in numberArr:
  16. EditNumber(itme)

random.choice(array)列表中随机取出一个值,random.sample(num, 8)列表中随机取出八个值;list(set(numberArr))去重后转为列表;numberArr.append(number)向列表添加值

使用faker模块

***主要用来创建伪数据***

安装faker模块:pip install Faker
国内源安装:**pip3 install -i https://pypi.doubanio.com/simple/ faker**

清华: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/

基本使用:
  1. from faker import Faker
  2. #创建对象,默认生成的数据为为英文,使用zh_CN指定为中文
  3. fake = Faker('zh_CN')
  4. print(fake.name())#随机生成姓名
  5. print(fake.address())#随机生成地址
  6. print(fake.phone_number())#随机生成电话号码
  7. print(fake.pystr())#随机生成字符串
  8. print(fake.email())#随机生成邮箱地址
  9. for i in range(10):
  10. print(fake.name())#随机生成10个姓名
生成100个号码:
  1. from faker import Faker
  2. fake = Faker('zh_CN')
  3. numberArr=[]
  4. def EditNumber(content):
  5. with open(file='number.txt', mode="a", encoding='utf-8') as file_s:
  6. # file —— 文件路径;mode —— 模式,即是写还是读等;encoding —— 字符集
  7. file_s.write(content + '\n') # 写入内容
  8. file_s.close() # 关闭文件
  9. for i in range(0,100):
  10. numberArr = list(set(numberArr))
  11. numberArr.append(fake.phone_number())
  12. i=len(numberArr)
  13. for itme in numberArr:
  14. EditNumber(itme)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/328526
推荐阅读
相关标签
  

闽ICP备14008679号