Python学习笔记--私有属性、构造方法、析构方法、常用内置方法

目录

私有属性

构造方法

析构方法

常用内置方法


私有属性

1. 私有属性是指在类内可以直接访问、而在类外无法直接访问的属性

2. Python中规定,在定义类时,如果一个类属性名是以__(两个下划线)开头,则该类属性为私有属性

举例

class Student:
    name = '未知'
    __id = '未知'
    def SetInfo(self, newname, newid):
        self.name = newname
        self.__id = newid

    def PrintInfo(self):
        print("姓名:%s, 身份证号:%s"%(self.name, self.__id))


if __name__ == '__main__':
    stu = Student()
    stu.SetInfo("小明", "25256326")
    stu.PrintInfo()
    # 错误写法:print("身份证号:%s" % (stu.__id))
    # 正确写法:print("身份证号:%s" % (stu._Student__id))

注:实际上,Python中并不存在无法访问的私有属性。如果在类中定义了一个私有属性,则在类外访问该私有属性时需要在私有属性名前加上“_类名”,即可正常运行。

print("身份证号:%s" % (stu._Student__id))

构造方法

1. 构造方法是Python类中的内置方法之一,它的方法名为__init__,在创建一个类对象时会自动执行,负责完成新创建对象的初始化工作。

只有一个参数的构造方法示例

class Student:
    def __init__(self):
        print("构造方法被调用")
        self.name = "未知"

    def PrintInfo(self):
        print("姓名: %s"%self.name)

if __name__ == '__main__':
    stu = Student()  # 创建Student类对象stu,自动执行构造方法
    stu.PrintInfo()

# 输出
'''
构造方法被调用
姓名: 未知
'''

带默认参数的构造方法示例

class Student1:
    def __init__(self, name = '未知'):  #定义构造方法
        print("构造方法被调用")
        self.name = name  #将self对应对象的name属性赋为形参name的值

    def PrintInfo(self):
        print("姓名:%s"%self.name)

if __name__ == '__main__':
    stu1 = Student1()
    stu2 = Student1("小明")
    stu1.PrintInfo()
    stu2.PrintInfo()

# 输出
'''
构造方法被调用
构造方法被调用
姓名:未知
姓名:小明
'''

析构方法

1. 析构方法是类的另一个内置方法,它的方法名为__del__,在销毁一个类对象时会自动执行,负责完成待销毁对象的资源清理工作,如关闭文件等。

注:类对象销毁有如下三种情况:

(1)局部变量的作用域结束

(2)使用del删除对象

(3)程序结束时,程序中的所有对象都将被销毁

class Student:
    def __init__(self, name):
        self.name = name
        print("姓名为%s的对象被创建"%self.name)

    def __del__(self):
        print("姓名为%s的对象被销毁"%self.name)

def func(name):
    stu = Student(name)

if __name__ == '__main__':
    stu1 = Student("小明")
    stu2 = Student("马红")
    stu3 = stu2
    del stu2
    func("张刚")
    del stu3
    stu4 = Student("刘健")

# 输出
'''
姓名为小明的对象被创建
姓名为马红的对象被创建
姓名为张刚的对象被创建
姓名为张刚的对象被销毁
姓名为马红的对象被销毁
姓名为刘健的对象被创建
姓名为小明的对象被销毁
姓名为刘健的对象被销毁
'''

注:如果多个变量对应同一片内存空间,则只有这些变量都删除后才会销毁这片内存空间中所保存的对象,也才会自动执行析构方法

1. 判断题

析构方法可以没有形参。

A.正确

B.错误

正确答案:B

解析:析构方法应有一个形参self,对应正在销毁的对象。

常用内置方法

1. __str__

调用str函数对类对象进行处理时或者调用Python内置函数format()和print()时自动执行,__str__方法的返回值必须是字符串

class Complex:
    def __init__(self, real, image):
        self.real = real
        self.image = image

    def __str__(self):
        return str(self.real)+'+'+str(self.image)+'i'

if __name__ == '__main__':
    c = Complex(3.2, 5.3)
    print(c)

#输出
'''
3.2+5.3i
'''

2. 比较运算的内置方法

内置方法功能描述
__gt__(self, other)进行self>other运算时自动执行
__lt__(self, other)进行self<other运算时自动执行
__ge__(self, other)进行self>=other运算时自动执行
__le__(self, other)进行self<=other运算时自动执行
__eq__(self, other)进行self==other运算时自动执行
__ne__(self, other)进行self!=other运算时自动执行

示例

class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def __le__(self, other):
        return self.age < other.age

if __name__ == '__main__':
    stu1 = Student("小明", 19)
    stu2 = Student("小红", 20)
    print("马红的年龄小于等于小明的年龄:", stu2 <= stu1)

# 输出
'''
False
'''

 判断题

1. __str__方法的返回值可以是整数。

A.正确

B.错误

正确答案:B

解析:__str__方法返回的数据必然是字符串。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值