2020-9-23类方法,del_()方法析构函数和垃圾级回收机制,_call_方法和可调用对象

Python学习

实例方法

实例方法是从属于实例对象的方法,实例方法的定义格式:def 方法名(self[形参])
要点:定义实例方法时,第一个参数必须为self,和前面一样,self指当前的实例对象
调用实例方法时,不需要也不能给self传参,self由解释器自动传参

下面是Demo


类对象

我们在前面讲的类定义格式中,class类名,实际上,当解释器执行class语句时,就会创建一个类对象

下面是Demo

#类对象
class Student:
    def __init__(self,name,score):  #self必须位于第一个参数
        self.name = name
        self.score =  score
    def say_score(self):  #self必须位于第一个参数
        print('{0}的分数是:{1}'.format(self.name,self.score))


stu2 = Student
s1 = Student('高希希',100)
s2 = stu2('高希希',60)

s1.say_score()
s2.say_score()
类属性和类方法

类属性时从属于类对象的属性,也称为类变量,由于类属性从属于类对象,可以被所有类属性调用

下面是Demo

class Student:
    company = 'sxt'#类属性
    count = 0  #类属性
    def __init__(self,name,score):
        self.name = name   #实例属性
        self.score = score
        Student.count = Student.count + 1

    def say_score(self):  #实例方法
        print('我的公司时:',Student.company)
        print(self.name,'的分数是:',self.score)


s1 = Student('张三',80)#s1是实例对象,自动调用_init_()
s1.say_score()

s2 = Student('高崎',60)
s3 = Student('高消息',100)
print('一共创建{0}个Student对象'.format(Student.count))
类方法

类方法是从属类对象的方法,类方法通过装饰器@calssmethod来定义,格式如下:@classmethod def 类方法名(cls[形参列表]):函数体
要点如下:
1.@calssmethod必须位于方法上面一行
2.第一个cls必须有:cls指的就是类对象本身
3.调用类方法格式:类名.类方法名(参数列表),参数列表中,不需要也不能给cls传值
4.类方法中访问实例属性和实例方法会导致错误
5.子类继承父类方法时,传入CLS时子类对象,而非父类对象

下面是Demo

#静态方法
class Student2:
    company = 'SXT'  #类属性
    @staticmethod
    def add(a,b):
        print('{0}+{1}={2}'.format(a,b,(a+b)))
        return a+b

Student2.add(20,30)
del()方法析构函数和垃圾级回收机制

del_()方法称为析构函数,用于实现对象被销毁时所需的操作
python实现自动垃圾回收,当对象没有被引用时(引用计数为0),由垃圾回收器调用del_()方法。

下面是Demo

#析构方法测试
class Person:
    def __del__(self):
        print('销毁对象{0}'.format(self))

p1 = Person()
p2 = Person()
del p2
print('程序结束')
_call_方法和可调用对象

定义 _call_方法的对象,称为可调用对象,即该对象可以像函数一样被调用

下面是Demo

# 测试_可调用call_方法

class SalaryAccount:
    '''工资计算'''

    def __call__(self, salary):
        print('算工资啦,,,')
        yearsalary = salary*12
        daysalary = salary//22.5#国家规定的每个月平均工作天数
        housalary = daysalary//8
        return dict(yearsalary=yearsalary,monthsalary=salary,daysalary=daysalary,housalary=housalary)

s = SalaryAccount()
print(s(6500))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值