python--self--内置方法(init,del,str)--新式类,经典类

self

那个对象调用方法,就是那个对象的引用
在类封装的内部,self就表示当前调用方法的对象自己
调用方法时,程序员不需要传递self参数(但是定义的时候,第一个参数必须是self)
在方法内部:可以通过self,访问对象的属性
在方法内部,可以通过self调用其他的对象方法

class Cat:
    def eat(self):
        print '%s爱吃鱼' %self.name
    def drink(self):
        print '%s要喝水' %self.name
#创建猫对象
tom = Cat()
#可以使用 .属性名 利用赋值语句就可以了
tom.name = 'Tom'
tom.eat()
tom.drink()

lili = Cat()
lili.name = 'lili'
lili.eat()
lili.drink()

内置方法

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

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

__del__方法: 在python中 当一个对象被从内存中销毁前(把这个对象从内存中删除掉),

会自动调用__del__方法

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

__str__方法: 在python中,使用python输出对象变量,默认情况下,会输出这个变量引

用的对象是由哪>一个类创建的对象,以及在内存中的地址(十六进制表示) 如果在开发中,

希望使用print输出对象变量时,能够打印自定义的内容,就可以利用__str__这个内置方法了

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

初始化方法

初始化方法:

__init__是python对象的内置方法 __init__方法是专门用来定义一个类具有那些属性和方法的

初始化方法 我们已经知道了使用 类名() 就可以创建一个对象 当使用类名() 创建对象是,Python的解释器会自动执行以下操作: 1.为对象在内存中分配空间--创建对象 2.调用初始化方法为对象的属性设置初始值————初始化方法(__init__) 这个初始化方法就是__init__方法,__init__是对象的内置方法 __init__方法是专门用来定义一个类具有那些属性的方法

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

lili=Cat('lili')
lili.eat()

新式类和经典类: object是Python为所有对象提供的基类,提供有一些内置的属性和方法,可以使用dir函数查看 新式类:以object为基类的类,推荐使用 经典类:不以object为基类的类,不推荐使用 在python3.X中定义的类时,如果没有指定父类,会默认使用object作为基类--python3.x中定义的类都是新式类 在python2.x中定义类时,如果没有指定父类,则不会以object作为基类 ####推荐使用新式类############# 新式类和旧式类在多继承时---会影响到方法的搜索顺序 为保证编写的代码能够同时在python2.x和python3.x运行 今后在定义类时,如果没有父类,建议统一继承自object

猜你喜欢

转载自blog.csdn.net/weixin_40460156/article/details/82683172
今日推荐