8.类定义,属性和继承

1.类的定义 class

类 是一个独立存放变量(属性/方法)的空间
类 是一类事物的抽象,不是真是存在的。描绘了该类事物的共性
比如:人、动物、植物(没有特指某个人、动物、植物)

实例 某类事物的具体个体,是该类事物的具体表现,它是真实存在的。
比如:小明 具体指某个 人

格式:
class 类名:
属性名 = 属性 【属性名相当于变量赋值】
def 方法名(self):
print(self.属性名+‘需要输出的方法’)
调用:
实例名 = 类名() 【实例名相当于变量】
print(实例名.属性名)
实例名.方法名()
调用2:
实例名 = 类名()
实例名.属性名 = 属性
print(实例名.属性名)
实例名.方法名()

class Ren: #定义一个类名
    xingming = '小明' #属性
    def fangfa(self): # 方法,self代表Ren类的本身
        print(self.xingming+'是个乖小孩') #直接用类的本身.类自身的属性

ren = Ren()
print(ren.xingming)
ren.fangfa()
结果:
小明
小明是个乖小孩

ren1 = Ren()
ren1.xingming = '小红'
print(ren1.xingming)
ren1.fangfa()
结果:
小红
小红是个乖小孩

class Ren:#定义一个类名
    xingming = '小明'#属性
    def fangfa(self,tezheng):#方法 特征
        print(self.xingming+'是个乖小孩',tezheng)

ren = Ren()
ren.fangfa('而且还狠聪明')
结果:小明是个乖小孩, 而且还狠聪明

“实例方法” 的调用过程与 self
将默认会传入的那个参数命名为self,用来表示调用这个方法的实例对象本身。
方法总是定义在类中的,但是却叫“实例方法”,因为它表示该类所有实例所共有的行为

方法
类中的方法,就是函数

self
代表实例的本身

调用
方法的调用和属性调用一样,通过点操作符调用,传参和函数传参一样

2.私有属性

有两私有属性,分别是在属性前加 一个下换线(_) 和 两个下划线(__)一个下滑线外部可以直接访问,二个下划线外部不可以直接访问。

_和 __ 的使用 更多的是一种规范/约定,没有真正限制的目的定义在类中的私有属性也可以被子类继承。
_
格式:
_属性名 = 属性
调用:
实例名._属性名

跟没有下划线的差别在于直接.是找不到这个属性的。只有你知道有这个私有属性才能查到
__
格式:
__属性名 = 属性
调用:
实例名 = 类名()
print(dir(实例名))
实例名.类名__属性名

class Ren:#定义一个类
    _name = '小明'#私有属性
    __age = 18#不可查询的属性
ren = Ren()
print(ren._name)
print(ren.__age)
结果:
小明
报错
那怎么查询呢
print(dir(Ren))#查询对象里面有的所有方法和属性
找到__age这个属性
print(ren._Ren__age)
18

3.初始化及析构

3.1. __init__初始化

class Ren:
    def __init__(self,name,age):
        self.name = name
        self.age = age
xiaoming = Ren('小明',15)#实例化一个对象,并传参
print(xiaoming.name)
print(xiaoming.age)
结果:
小明
15

class Ren1:
    def fangfa(self,name,age):
        print('你的名字叫什么',name,'今年多少岁',age)

xiaohong = Ren1()
xiaohong.fangfa('小红',18)
结果:
你的名字叫什么 小红 今年多少岁 18
不能直接.name和.age,只能.fangfa (定义的这个方法)

3.2.析构 del

就是一个析构函数了,当使用del 删除对象时,会调用他本身的析构函数。
提示开发者,对象被销毁了,方便调试。
进行一些必要的清理工作。

class Ren:
    def __init__(self,name,age):
        self.name = name
        self.age = age
xiaoming = Ren('小明',15)#实例化一个对象,并传参
print(xiaoming.name)
del xiaoming #销毁xiaoming这个实例
print(xiaoming.age)
结果:
小明
报错(把实例化销毁了,就找不到xiaoming这个实例出来)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值