类和类的使用

- 类

  • 类面向对象的作用:即取最终的结果,如有重复逻辑,类可让逻辑更方便,封装
    函数只能放其中一个操作
    类可以放一连串操作
    函数打印
    class 里面的函数内容相当于设计图纸,实例化后相当于设计图纸设计出来后的结果
    初始化 def init(self,name):
    析构,def del(self):
class People:
    name = 'xiaoming' #类属性, 类里面的变量称为属性
    _age = 18  #私有属性,别人知道后不会去动它,概念性问题
    __age = 18  #也是私有属性,访问会报错

a = People() #实例化
print(a._age)  #通过实例访问类属性,虽然是私有的,但是访问还是可以打印,
b = People()
18


class My_class:
    i = '12334'
    def f(self):
        print('123')
        return 'hello'

my = My_class()  #实例化
print(my.i)
print(my.f())
my.f()
12334
123
hello
123


class Base:
    name = 18  #类属性
    def run(self,name):   #方法,self实例本身
        self.name = name  #保存实例属性
        print('%s在跑步%s'%self.name)
        print('跑步')


#将类实例化
goudan = Base()
goudan.name = "狗蛋"  #外面先实例属性值
print(goudan.name)  #实例属性和类属性名一样,这里打印的是实例属性
#实例调用类属性,
goudan.run('狗蛋')  #实例调用方法
狗蛋

- 类的方法

  • 类的方法,类是函数的爸爸,函数是儿子
class User:           #包含了对于用户所有的功能
    def zhuce(self,name):                 #类里面的方法都会携带参数,传参数 name,
        print('%s实现注册功能'%name)

    def dxyzm(self):
        print('实现短信验证码功能')

    def denglu(self,name):
        print('%s实现登录功能'%name)

goudan = User()  #实例化
goudan.zhuce('goudan')  #实例调用注册的方法, 实例.方法名()--方法调用方式
goudan.denglu('goudan')
print('------------------------------')
xiaohong = User()
xiaohong.denglu('xiaohong')
goudan实现注册功能
goudan实现登录功能
------------------------------
xiaohong实现登录功能
  • 接收参数
    更加方便的调用类里面的方法,每一个方法是调用一次
    保存为实例属性
class User1:
    def zhuce(self,name):   #self代表实例本身
        self.name = 'goudan'     #定义实例属性, 实例.属性名=111
        print('%s实现注册功能'%self.name)   #不能只写name,无self下面的函数无法调用

    def dxyzm(self):
        print('%s实现短信验证码功能'%self.name)

    def denglu(self):
        print('%s实现登录功能'%self.name)

goudan = User1()

goudan.zhuce('goudan')    #goudan=self. name = goudan , 给实例属性定义定义
goudan实现注册功能


class User2:
    def zhuce(self):   #self代表实例本身
        print('%s实现注册功能'%self.name)   #不能只写name,无self下面的函数无法调用, 会去类的外面找self.name的定义

    def dxyzm(self):
        print('%s实现短信验证码功能'%self.name)

    def denglu(self):
        print('%s实现登录功能'%self.name)

xiaohong = User2()
xiaohong.name ='xiaohong'   #定义xiaohong的name的实例属性
xiaohong.zhuce()
xiaohong实现注册功能


  • 初始化,析构
    魔术方法
    析构会在最后执行
    析构方法
class User2:
    def __init__(self,name):  #初始化方法,在实例化的时候执行
        self.name = 'guodan'  #定义实例属性

    def __del__(self):   #不需要调用, 正常的情况下在程序执行完后再调用,析构
        print('%s资料销毁'%self.name)

    def zhuce(self):
        print('%s实现注册功能'%self.name)

    def dxyzm(self):
        print('%s实现短信验证码功能'%self.name)

    def denglu(self):
        print('%s实现登录功能'%self.name)


goudan = User2('goudan') #实例化的时候有参数
goudan.denglu()
print('------------------------------')
del goudan  #析构是在实例挂掉后再去执行
print('1234')
guodan实现登录功能
------------------------------
guodan资料销毁
1234

题目:定义一个矩形类,有长和宽2个实例属性,还有一个计算面积的方法:

class jx:
    def __init__(self,length,width):  #初始化参数后,下面的函数都可以直接调用此初始化的参数,
        self.length = length
        self.width = width
    def square(self):
        return '面积是:%s'%(self.length*self.width)  #返回值需要赋予变量,需要打印出来,

ss = jx(4,5)  #实例化的时候即需传入参数,直接定义实例化属性
S = ss.square()
print(S)
面积是:20

- 私有属性和保护属性

  • 私有属性:’__'2个下划线,无法访问,需要更改访问名字
  • 保护属性:‘_’ 一个下划线,可以访问
class People:
    name = 'xiaoming' #类属性, 类里面的变量称为属性
    _age = 18  #保护属性,别人知道后不会去动它,单下划线开头的属性和方法外界仍然是可以访问的,所以更多的时候它是一种暗示或隐喻
    __age = 18  #私有属性,访问会报错,2个下划线,无法访问,

a = People() #实例化
# print(a.__age) # 私有的无法访问,
print(a._People__age)  #需要更改下访问名字
print(a._age) #可以访问
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值