Python基础学习之面向对象基础

1.面向对象

面向过程:注重开发的步骤与过程
面向对象:注重组合调用资源解决问题

2.类和对象

类:相同属性与功能的一类事物(虚拟抽象的,就像飞机图纸)
对象:类的具体表现,面向对象的核心(现实的,就像飞机)
类(class):
  三要素:
    类名:(首字母大写,驼峰命名法)
   属性:对象的特征描述
   方法:对象具有的行为
一个类可实例多个对象,self是实例方法的第一个参数,代表的是当前调用此方法的对象本身
实例属性:self.属性名
   1.类属性属于类,实例属性属于对象
   2.类属性在内存中只保留一份(属公有),实例属性在每个对象中都保留一份(为对象所有,属私有)
   3.类属性 类可访问(类名.属性名),实例对象也可访问(对象名.属性名),实例属性 类不可访问(类名查看报错),对象可访问(方法内用:self.属性名/方法外;对象名.属性名)
   4.当类的属性与实例的属性名一致时,类名.属性名 查看类属性 对象名.属性名 查看实例属性

#类及类属性
class H(object):
	hair='gold'#类属性
#增删查改类中单个属性
print(H.hair)# gold 查
H.hair='black'#改
print(H.hair)# black
H.name='Python'#增
print(H.name)# Python
del H.name
print(H.name)#  type object 'H' has no attribute 'name'

class Par(object):
    name='python'
    def speak(self):
        print('实例方法中的self',self)#self 表示当前调用的对象
#实例化对象 对象名=类名()
p1=Par()
#打印实例化对象,输出的是对象在内存的地址
print('实例化对象p1',p1)# 实例化对象p1 <__main__.Par object at 0x000002873D9261D0>
#对象调用类中的实例方法
p1.speak()# 实例方法中的self <__main__.Par object at 0x000002873D9261D0>
#对象调用类的属性
print(p1.name)# python
p2=Par()
print('第二次实例化p2',p2)# 第二次实例化p2 <__main__.Par object at 0x000002873DC26320>
p2.speak()# 实例方法中的self <__main__.Par object at 0x000002873DC26320>
#实例属性
class A(object):
    name='python'#类属性
    def work(self):#实例方法  self代表实例对象本身
        print(f'这是实例方法中的实例属性{self.age}')#self.age 实例属性
#实例化对象
a1=A()
#实例属性赋值
a1.age=19
a1.work()# 这是实例方法中的实例属性19
#添加实例属性
a1.job='py'
print(a1.job)# py
print(a1.age)# 19
del a1.age
print(a1.age)#  'A' object has no attribute 'age'

对象=类名() ,是一个实例化的过程,调用了类中new方法, 为此对象分配空间,返回对象地址赋给对象名
实例化对象格式: 对象名=类名()
实例方法由对象调用,至少有一个self参数,执行实例方法时,自动将该方法的对象赋值给self

3.构造函数__init__

此方法通常用来做实例属性初始化 或 赋值 操作 类被实例化时会自动执行此方法

#构造方法
#__init__方法  实例化会自动调用此方法
class A(object):
    def __init__(self):
        print('这是构造方法中的init')
a=A()# 这是构造方法中的init
#举例
class Her(object):
    name='这是类属性'
    age=10
    def __init__(self,hp=500,at=200):
        self.name='自在'#实例属性
        self.hp=hp#生命值
        self.at=at#攻击力
    def move(self):
        print(f'{self.name}在移动')
    def attack(self):
        print(f'{self.name}的攻击力为{self.at}')
#实例化对象
h=Her()
h.move()# 自在在移动
h.attack()# 自在的攻击力为200
#传参
h1=Her(300,80)
h1.attack()# 自在的攻击力为80
#通过类名查看类属性
print(Her.name)# 这是类属性
#通过对象名查看类属性 若与实例属性名相同则查看的是实例属性值
print(h1.age) # 10

4.析构函数__del__

析构方法: 是对象在垃圾回收的时候起作用的一个方法,它的执行一般也意味着此对象不能继续被引用,回收内存。
删除对象时 解释器会默认调用 del 方法

#格式:
	class Aobject:
		def __del__(self):
			print('销毁')
	a=A()
	print('最后一句') 此句会在’销毁‘前执行
#析构方法
class A(object):
    def __init__(self):
        print('这是init方法')
    def __del__(self):
        print('销毁')
a=A()# 这是init方法
print('这是最后一句')
print('python')
# 这是最后一句
# python
# 销毁
del a
print('这是最后一句')
# 销毁
# 这是最后一句



  • 究竟是阳光明媚了夏天,还是夏天沾了你的光
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值