学习python的day12之面向对象基础

面向对象基础

一、类和对象

类和对象的关系:用类去创建(实例化)一个对象

在开发中,先有类再有对象

1.类是对一系列具有相同特征和行为的事务的统称,是一个抽象的概念,不是存在的事物。

特征即是属性

行为即是方法

1.1定义类

python2中类分为:经典类和新式类

语法:

  class  类名():

    代码

    ......  

 

注意:类名要满足标识符命名规则,同时遵循大驼峰命名习惯。

 

 

2.创建对象

对象又名实例。

语法:

  对象名 = 类名()

 

#1.体验类和对象

#创建类
class Washer():
    def wash(self):
        print('洗衣服')

#创建对象
haier = Washer()

#验证成果
print(haier)

#使用wash功能--实例方法/对象--对象名.函数名()
haier.wash()

'''
输出:

<__main__.Washer object at 0x000001FCBBCE8400>
洗衣服


'''

输出对象,输出的是内存地址

3.类里面的self

self指的是调用该函数的对象。

class Washer():
    def wash(self):
        print('洗衣服')
        print(self)

haier = Washer()

print(haier)
haier.wash()
'''
<__main__.Washer object at 0x000002C856CD8400>
洗衣服
<__main__.Washer object at 0x000002C856CD8400>
'''

由于打印对象和打印self得到的内存地址相同,所以self指的是调用该函数的对象 

 

4.一个类可以创建多个对象

class Washer():
    def wash(self):
        print('洗衣服')
        print(self)
haier1 = Washer()
haier2 = Washer()

print(haier1)
haier1.wash()
print()
print(haier2)
haier2.wash()
'''
输出:
<__main__.Washer object at 0x000002597DB28400>
洗衣服
<__main__.Washer object at 0x000002597DB28400>

<__main__.Washer object at 0x000002597DB38580>
洗衣服
<__main__.Washer object at 0x000002597DB38580>
'''

结论:

一个类可以创建多个对象

多个对象都调用函数时,self的内存地址不相同

5.添加和获取对象属性

属性即是特征,比如:洗衣机的长宽高,颜色,重量...

对象属性既可以在类外面添加和获取,也可以在类里面添加和获取

5.1在类外面添加和获取对象属性

添加语法:  对象名.属性名=值

获取语法:对象名.属性名

class Washer():
    def wash(self):
        print('洗衣服')
        print(self)
haier1 = Washer()
haier1.width = 300
haier1.height = 500

print(haier1.width)
print(haier1.height)
'''
输出:
300
500
'''

5.2在类里面获取对象属性

class Washer():
    def wash(self):
        print('洗衣服')
        print(self.width)
        print(self.height)
haier1 = Washer()
haier1.width = 300
haier1.height = 500
haier1.wash()
'''
输出:
洗衣服
300
500
'''

二、魔法方法

在python中,__xx__()的函数叫做魔法方法,指的是具有特殊功能的函数。

1. __init__()

__init__()方法的作用:初始化对象。

class Washer():
    def __init__(self):
        self.width = 300
        self.height = 500
    def print_info(self):
        #在类里面调用实例方法
        print(self.width,self.height)
haier1 = Washer()

haier1.print_info()
'''
输出:
300 500
'''

注意::

__init__()方法 ,在创建一个对象时默认被调用,不需要手动调用

__init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递过去。

1.1带参数的__init__()

class Washer():
    def __init__(self,width,height):
        self.width = width
        self.height = height
    def print_info(self):
        #在类里面调用实例方法
        print(self.width,self.height)
haier1 = Washer(300,500)

haier1.print_info()
'''
输出:
300 500
'''

2.__str__()

当使用print输出对象时,默认打印对象的内存地址。如果定义了__str__()方法,那么就会打印从这个方法中return的数据

class Washer():
    def __init__(self,width,height):
        self.width = width
        self.height = height
    def __str__(self):
        return '说明书'
    def print_info(self):
        #在类里面调用实例方法
        print(self.width,self.height)
haier1 = Washer(300,500)

haier1.print_info()
print(haier1)
'''
输出:
300 500
说明书
'''

3.__del__()

当删除对象时,python解释器也会默认调用__del__()

class Washer():
    def wash(self):
        self.width = 300
    def __del__(self):
        print('对象已删除')
haier = Washer()
'''
输出:
对象已删除
'''

 

posted @ 2020-10-29 00:07  as_scheduled  阅读(60)  评论(0编辑  收藏  举报