欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

学习Python之路之self的用法、内置函数的用法以及私有属性和私有方法

程序员文章站 2022-05-20 14:57:56
...

一、self

1、什么是self

self:哪个对象调用的方法self就是哪个方法的引用、

2、self的用法

在类封装的方法内部,self就表示当前调用方法的对象自己

调用方法时。程序员不需要传递self参数(但是定义的时候,第一个参数必须是self)

在方法内部:可以通过self,访问其他对象的属性,还可以调用其他对象方法

3、实例

案例【1】

class Cat:
    def eat(self):
        print '%s 爱吃鱼' %self.name
    def drink(self):
        print '%s 爱喝水' %self.name
tom = Cat()
# 给tom对象添加一个属性
tom.name = 'Tom'
tom.eat()
tom.drink()
print tom
lazy_cat = Cat()
# 给lazy_cat对象添加一个属性
lazy_cat.name = 'lazy'
lazy_cat.eat()
lazy_cat.drink()
print lazy_cat

tom = Cat()
tom.name = 'fentiao'
tom.eat()
tom.drink()

学习Python之路之self的用法、内置函数的用法以及私有属性和私有方法

注意:在日常开发中,不推荐在类的外部给对象增加属性,如果在运行的时候,没有找到属性,程序就会报错,对象应该包含那些属性,应该封装在类的内部

二、内置方法

1、有什么内置方法?

__del__方法:对象被从内存中销毁之前,会自动调用

__str__方法:返回对象的描述信息,print 对象

__init__初始化方法:专门用来定义一个类具有那些属性和方法的

2、在什么情况下,会调用内置方法

在python中,当一个对象被从内存中销毁之前(把这个对象从内存中删除掉),会自动调用___del__方法

__del__的应用场景:如果希望在对象被销毁之前,在做一些事情,可以考虑__del__方法

在python中,使用python输出对象变量,默认情况下,会输出这个变量引用的对象是由哪一个类创建的,以及在内存中的地址

__str__方法的应用场景:若在开发中,希望使用print输出对象变量时,能够打印自定义的内容,就可以利用__str__这个内置方法了

我们知道用 类名()就可以创建一个对象,当使用类名创建对象时,python的解释器会自动执行以下操作:21.为对象在内存中分配空间--创建对象 2.调用初始化方法为对象的属性设置初始值--初始化方法(__init__方法)

3、实例

案例【1】:

class Cat:
    def __init__(self,new_name):
        self.name = new_name
        print '%s 来了' %self.name
    def __del__(self):
        print '%s 走了' %self.name
    def __str__(self):
        # 必须返回一个字符串
        return '我是 %s' %self.name

# tom是一个全局变量
# 所以当我们的代码全部执行完之后,系统才会把tom这个对象进行回收
tom = Cat('Tom')
print tom
print tom.name
# del关键字,可以从内存中删除一个对象,del关键字自己调用了__del__方法
del tom
print '*' * 50

 

学习Python之路之self的用法、内置函数的用法以及私有属性和私有方法

生命周期的概念:

生命周期
一个对象从调用类名()创建,声明周期开始
一个对象的__del__方法一旦被调用,生命周期就结束
在对象的生命周期内,可以访问对象的属性,调用对象的方法

 案例【2】:初始化方法

class Cat:
    def __init__(self,new_name): # 与函数一样
        print '这是一个初始化方法'
        # self.属性名= 属性的初始值
        #self.name = 'Tom'
        self.name = new_name
    # 在类中 任何方法都可以使用这个self.name
    def eat(self):
        print '%s 爱吃鱼' %self.name
# 并没有调用__init__方法
# 使用类名()创建对象的时候,会自动调用初始化方法__init__
tom = Cat('Tom')
# 在__init__方法的内部使用 self.属性名= 属性的初始值 定义对象的属性
# 定义属性之后,再使用Cat类创建对象,都会拥有该属性
print tom.name
tom.eat()

lazy_cat=Cat('Lazy_cat')
lazy_cat.eat()

学习Python之路之self的用法、内置函数的用法以及私有属性和私有方法

三、私有属性和私有方法

私有属性和私有方法的应用场景,在实际开发中,对象的某些属性或方法可能只希望在对象的内部使用,而不希望在外部被访问到

私有属性就是 对象不希望公开的属性

私有方法就是 对象不希望公开的方法

案例:

class Women:
    def  __init__(self,name):
        self.name = name
        # 定义私有属性
        self.__age = 18
    def __secret(self):
        # 在对象的方法内部,是可以访问对象的私有属性的
        print '%s 的年龄是 %d' %(self.name,self.__age)

lily = Women('lily')
# 私有属性,在外界不能被直接访问
#print lily.age
# 私有方法,同样不允许在外界直接访问
lily.secret()

学习Python之路之self的用法、内置函数的用法以及私有属性和私有方法

因为私有方法或属性不希望被外界访问到,所以在执行时就会出错

 

 

 

 

 

 

 

 

 

 

 

相关标签: 6)