python面向对象2

私有属性,私有方法

主要通用 __ 添加到属性名前,可以让该属性得到一个保护

class WuDang:
    name = "武当"
    __kongfu_list = ["aaa", "bbb", "ccc"]


wd = WuDang()
print(wd.name)
print(wd.__kong_list)

类的继承

定义类的时候,如果希望继承自另外一个类

可以通过

class 类名(父类的类名):

定义普通类,有两种方式

如果需要继承的话,只有这一种

继承后的效果

当前的类,拥有了父类的公有属性和公有方法

类的继承,提高了代码的效率,减了重复的代码

专业术语

父类是子类的基类,子是父类的派生类,子类从父类派生

方法的重写

如果父类的方法,与需求不符合

那么就在当前(自己的类)中重新写一个方法

在自己的方法中,定义需要的功能

注意

对于重写而言

方法名一定是与父类中方法同名

初始化对象属性

如果一个对象在创建的时候,需要有对象的属性

那么,我们应该在init方法中进行初始化

初始化操作主要的处理是

 对象.属性 = 值

问题,值从哪里来?

类在进行实例化时,往类名后面的括号中,传递数据

t = Cat(‘汤姆’)

通过这种方式传参

对象 =  类名(参数)

参数会传送到init方法中,按照位置对应的关系进行给值

初始化方法定义的时候
def __init__(self, 形参1,形参2):

我们在外部把类实例化对象时传参这样传
对象 = 类名(实参1,实参2)

通过这种方式传递参数
实参1的数据,会传递给形参1
实参2的数据,会传递给形参2

不是所有的对象属性都是要传参的

有的对象属性,可以通过计算获取

例如,房屋摆放家具案例中的剩余面积,用总面积- 已摆放的家具面积

in

not in

is

is not

身份运算符

进行数据在内存中地址的验证

In [4]: a = [1,2,3]

In [5]: b = a

In [6]: id(a)
Out[6]: 2058783955976

In [7]: id(b)
Out[7]: 2058783955976

In [8]: a is b
Out[8]: True
In [10]: a
Out[10]: [1, 2, 3]

In [11]: b
Out[11]: [1, 2, 3]

In [12]: c = [1,2,3]

In [13]: id(c)
Out[13]: 2058782337992

In [14]: id(a)
Out[14]: 2058783955976

In [15]: a is c
Out[15]: False

区分 == 验证 与 身份证,验证时关注的点

In [17]: a
Out[17]: [1, 2, 3]

In [18]: b
Out[18]: [1, 2, 3]

In [19]: c
Out[19]: [1, 2, 3]

In [20]: a == c
Out[20]: True

In [21]: a is c
Out[21]: False

定义类的两种方式

# 定义一个类,创建类对象
# 1,完整版  class 类名(object):   #如果类有继承其它的类,其它类的类名就写在括号中
# 2,简单版class 类名:  # 如果类没有继承其它的类的话,我们使用这一种
class Cat:
    pass

创建对象

接收对象的变量名 = 类名()
p = Plane()

1553829460001

初始化方法init

类名()

创建对象

被动触发

创建对象的同时,会触发一个init方法

对象创建出来的时候,会执行一次init方法

利用这个特性,我们可以在init方法中添加一些东西

婴儿出生的哭

游戏开始时的初始化等待

对象消失时del方法

对象从内存中被注销,被释放内存空间的时候,会自动触发的方法

1,主动删除

del 对象

del(对象)

2,游戏结束,代码运行到最终

触释器会清空所有资源,清空内存中存放的一切数据

清空一切时,自然也会清空对象

def __del__(self):
    # print('del')
    words = [
        "我还会回来的",
        "我还不想死",
        "下次我会更劢害的"
    ]
    idx = random.randint(0,2)
    print(words[idx])

打印对象时的输出控制str方法

def __str__(self):
    return "abc"

str方法中

返回的是什么内容

打印这个对象时,会就会显示什么内容

给对象添加属性

对象.属性 = 值

1553830902989

1553831089112

给对象添加属性的时机

  1. 初始化的时候

    小孩一出生,肯定有一个编号,这个编号,就是相当于小孩对象的属性

    小孩一出生,身高,体重,对象属性

    上述的对象属性,创建的时机

    应该是在初始化的时候

    也就是说

    是在对象被创建的时候,把属性赋给对象

    .

    可以利用init方法,给对象添加需要的对象属性

    .

  2. 需要的时候

    小孩长大了,参加培训

    获得了技能

    那么

    这种技能,属于后面滔天大罪 中的属性

    因此,这样一样的对象属性

    不在初始化方法中赋值

    可以在外面给他添加

定义类的两种方式

# 定义一个类,创建类对象
# 1,完整版  class 类名(object):   #如果类有继承其它的类,其它类的类名就写在括号中
# 2,简单版class 类名:  # 如果类没有继承其它的类的话,我们使用这一种
class Cat:
    pass

创建对象

接收对象的变量名 = 类名()
p = Plane()

1553829460001

初始化方法init

类名()

创建对象

被动触发

创建对象的同时,会触发一个init方法

对象创建出来的时候,会执行一次init方法

利用这个特性,我们可以在init方法中添加一些东西

婴儿出生的哭

游戏开始时的初始化等待

对象消失时del方法

对象从内存中被注销,被释放内存空间的时候,会自动触发的方法

1,主动删除

del 对象

del(对象)

2,游戏结束,代码运行到最终

触释器会清空所有资源,清空内存中存放的一切数据

清空一切时,自然也会清空对象

def __del__(self):
    # print('del')
    words = [
        "我还会回来的",
        "我还不想死",
        "下次我会更劢害的"
    ]
    idx = random.randint(0,2)
    print(words[idx])

打印对象时的输出控制str方法

def __str__(self):
    return "abc"

str方法中

返回的是什么内容

打印这个对象时,会就会显示什么内容

给对象添加属性

对象.属性 = 值

给对象添加属性的时机

  1. 初始化的时候

    小孩一出生,肯定有一个编号,这个编号,就是相当于小孩对象的属性

    小孩一出生,身高,体重,对象属性

    上述的对象属性,创建的时机

    应该是在初始化的时候

    也就是说

    是在对象被创建的时候,把属性赋给对象

    .

    可以利用init方法,给对象添加需要的对象属性

    .

  2. 需要的时候

    小孩长大了,参加培训

    获得了技能

    那么

    这种技能,属于后面滔天大罪 中的属性

    因此,这样一样的对象属性

    不在初始化方法中赋值

    可以在外面给他添加

获取对象属性的值

对象.属性    ----> 可以得到对象的属性的值

调用对象的方法

对象.方法名()     -----> 让对象的方法运行起来
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值