python基础四 面向对象编程

面向对象编程

面向对象的基本思想

面向对象变成实际上是在创建类,之后再由类创建对象的一个过程,类实际上是一张图纸,用于规定对象的总体概括
而对象实际上是从图纸创建的出来的实体,实体可以涵盖图纸规定的内容,但是又有一些实际过程中的修改和加工

#设计车类
# class 表示创建类
# Car 表示类名
class Car:
    pass
c=Car()    # 把类的概念进行是例化,实列化的过程就是通过类来创建对象的过程
print(c) # <__main__.Car object at 0x000002710CBB8C0  # 可以看出c实际上是由Car来创建的对象

# 给车加东西
class Car:
    pass
c=Car() # 把类的概念进行是例化,实列化的过程就是通过类来创建对象的过程
        # 对象=类() 这个方式是创建对象的过程
c.lunzi="园的" # . 翻译成 “的” 表示 这辆车的轮子是园的
c.color="骚红的"
c.paizhao="京A6666"
c.pailiang="6.3T"    # 轮子,颜色 拍照 排量 称为类的属性
print(c.pailiang) # 查看车的属性
print(c.price)# 'Car' object has no attribute 'price' 车对象没有price这个属性

"""
每创建一个对象  就开辟一个地址 该对象的所有属性 存在该地址
再次创建对象 就又开辟一个地址 这个地址没有上一个对象的属性 需要重新添加
"""
# 自己的类名 首字母大写 括号可加可不加 没有继承的时候可以不加

class Computer:
    pass
c1=Computer()  # 创建第一个对象 开辟地址 以下属性存在该地址
c1.pinpai="神州"
c1.price=100
c1.cpu="i7"
c1.neicun="1G"

c2=Computer()  # 创建第二个  又开辟新地址 属性存在该地址
c2.pinpai="小米"
c2.price=1000
c2.cpu="i5"
c2.neicun="1T"
print(c1.pinpai)# 神州
print(c2.pinpai)# 小米

class Computer:
    def __init__(self): # 构造方法 创建对象的时候系统自动访问 创建对象之后这个方法就调用了
                        # self 类的对象 当前创建的对象
        print("调用")
c=Computer() # 调用   # 此时就执行了 __init__()

继承

      # 继承 :子类自动拥有父类中除了私有内容外的所有其他内容 包括属性 方法 私有化下面回讲到
      # 子类在父类的基础上 扩展了功能 父类里面的功能 称为 基类 子类自己的功能称为 派生功能
class Niu:
    def da(self):
        print("牛魔王大家很厉害")
    def pao(self):
        print("你上来啊")
class Honghaier(Niu): # 继承Niu类
    def pao(self):
        print("你好")
H=Honghaier()
H.da() #牛魔王大家很厉害    # 调用方法的时候 先找自己 再找父类 自己有的就不找父类了
H.pao() # 你好  # 自己又pao这个方法 就不用去调用父类的方法了

方法中传入类

#  修改程序
# 创建孙悟空类
class Sunwukong:
    def da(self,yaoguai):
        yaoguai.teng()
# 创建妖怪对象
class Zhizhujing:
    def teng(self):
        print("蜘蛛精很疼")
class Heixiongjing:
    def teng(self):
        print("黑熊精很疼")
class Baigujing:
    def teng(self):
        print("白骨精很疼")
# 实例化一个孙悟空和一个妖怪
swk=Sunwukong()        
hxj=Heixiongjing() 
# 孙悟空打妖怪
swk.da(hxj) # 黑熊精很疼

面向对象编程 成员

成员包括: 变量 方法 属性@property 私有

变量

1 实例变量 : 对象.XXXX=XXXX 又叫字段 或者 属性 给对象用的 实列变量通过对象调出
在__init__里面的属性可以叫做实列变量
对象自己添加的属性也叫实列变量
2 类变量: 可以直接使用类名进行访问的 也可以使用对象进行访问
当有类变量的时候 类变量单独存放在一个地址 (类变量是这个类共有的属性)
在创建对象后 开辟一个新的地址 存储创建对象的各种属性(实列变量)
当对象想调用各种属性的时候 先从自身寻找 找不到再去 访问类变量存储的地址寻找属性
如果这个对象自己创建了一个和类变量一样的属性 那么这个属性存储在这个对象自己的地址里面
并不会对对象地址的属性修改 下次访问的时候 就从自己的地址里面拿

# 实列变量 
class Person:
    def __init__(self,name,height,weight):
        self.name=name
        self.height=height
        self.weight=weight   # 这些属性就是实列变量
mahuateng=Person("马化腾","180","160")
print(mahuateng.height)# 实例变量
mahuateng.company="腾讯" # 也是实列变量

# 类变量
class Person:
    country="中国"  # 类变量 可以通过类来调用 也可以通过对象来调用
    def __init__(self,name,age):
        self.name=name
        self.age=age
print(Person.country)  # 类调用
p1=Person("Tom","18")
p2=Person("徐速","17")
print(p1.name,p2.name)  # Tom 徐速   # 找属性的时候 先从自己的地址寻找 找不到在取类的地址寻找
print(p1.country,p2.country) # 中国 中国  #  对象自己没有这个country的属性 自己的地址找不到,就从类中去调用
p1.country="大清" # 对 p1 对象指定新的属性  这个时候就会在自己的地址存储一个新的属性 下次找的时候先从自己的地址找 
print(p1.country) # 大清   #从自己的地址找到了
print(p2.country)  # 中国   #自己的地址没有从类里面去找
Person.country="美国" # 对类属性进行修改  类属性只能由类修改
print(p1.country,p2.country
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值