Python类的概念

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

封装

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

继承

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

多态

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

定义类

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并没有对方法和属性的访问权限进行限制;可以方法或属性前面加单下划线、双下划线,可以在首尾加双下划线:

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

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

  1. 双下划线表示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)  # 私有不能属性可以通过实例名访问,会报错

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

这是一个特殊方法,类创建时会自动执行它,它必须包含一个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


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

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)向列表添加值

使用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/

基本使用:
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个姓名
生成100个号码:
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)
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知勤者笔记

给点吧,没动力了!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值