Python学习总结(三)类的创建与封装性

python中的类(写到封装性)

使用dir(func_name)可以查看函数的内置(隐藏)方法。


关于类的创建

类名应该使用驼峰命名法(CamelCase),中间没有下划线,每个关键字的首字母应该大写。

代码实例:
class PrintDate:
    def __init__(self, a=2019, b=1, c=1):
        self.year = a
        self.month = b
        self.day = c

    def __str__(self):
        return "current date: %s - %s - %s" % (self.year, self.month, self.day)

    def print_date(self):
        print("current date: %s - %s - %s" % (self.year, self.month, self.day))

我的理解:
1.关于__init __

我觉得函数的隐藏方法(诸如 __init __ 初始化方法云云)可以类比于C++的隐式构造函数,如果用户没有显示的声明或者定义这个构造函数,则python解释器会自动调用这个方法来进行隐式初始化,否则则需要用户自己去定义这个函数。

2.关于__del __

相似的,__del __ 可以类比于析构函数,当对象的生命周期结束后,程序隐式调用析构函数进行“善后”处理。
另外,使用del关键字可以直接删除对象。

3.关于__str__

可以用来指定返回的信息,但一定要有变量接收这个返回值。

4.关于必须添加的参数self

self返回的是当前对象的引用,和C++的this指针有些相似,只不过this指针是隐式使用的,self则必须在函数定义时写到参数当中。
另外,对当前类内的参数进行初始化一定要使用 self 来引用。


三个关键字
关键字写法作用
isA is BA和B的引用的地址相同时返回True,否则返回False
is notA is not BA和B的引用的地址不同时返回True,否则返回False
NoneA = None先占用一个元素,可以充当任何类型
is 与 is not

作用如上所述,举个很生动的例子:
在这里插入图片描述
(1)创建两个列表,可以发现他们的地址是不同的,由于列表属于可变类型,因此即使两个列表的内容相同,他们的地址也还是不同的。
在这里插入图片描述
(2)使用等于运算符和使用is 判断的结果
在这里插入图片描述
由此可见,==只能比较两个元素的值是否相等,而isis not则可以比较二者的地址是否相同。


一个例子
class PrintDate:
    def __init__(self, a=2019, b=1, c=1):
        self.year = a
        self.month = b
        self.day = c

    def __str__(self):
        return "current date: %s - %s - %s" % (self.year, self.month, self.day)

    def print_date(self):
        print("current date: %s - %s - %s" % (self.year, self.month, self.day))


class PersonInfo:
    def __init__(self, name, sex):
        self.name = name
        self.sex = sex
        self.dd = None  # None关键字可以用来表示任何类型

    def print_info(self):
        print("self_info: name: %s, sex: %s" % (self.name, self.sex))
        if self.dd is None:  # 使用is或者not is 来判断两变量地址是否相同
            print("he has no birthday_info")
            return

        print(self.dd)


# date = PrintDate(1999, 11, 21)
ps = PersonInfo("cui", "nan")
# ps.dd = date
ps.print_info()


私有属性和方法(在外界不能直接访问)

在属性或者方法的变量名前增加两个下划线。
ex.
__属性名
__方法名

tips
可以使用_类名__属性名来访问私有成员。这也体现了在 python 中没有绝对的私有。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值