python之面向对象编程

面向对象编程是一种编程方式,这种编程方式需要使用“对象”来实现

对象的特征:

  1. 世间万物皆对象
  2. 每个对象都是唯一的
  3. 对象具有属性和行为(对象的行为包括具有的功能及具体的实现)
  4. 对象具有状态(状态是指某个瞬间对象的各个属性的取值)
  5. 对象分为类对象和实例对象两大类(类对象是具有相同属性和行为的实例对象的抽象;类对象就是实例对象的模板,实例对象是类对象创建出来的;此外,同一个类对象的所有实例对象如果具有相同的属性,表明它们的属性的含义是相同的)

面向对象编程的大体步骤

  1. 抽象出类对象
  2. 抽象出类对象的属性
  3. 抽象出类对象的行为(方法)
  4. 根据类对象创建实例对象
  5. 通过实例对象访问属性和方法

定义类对象的语法格式

class 类名(object):#属性与方法
其中:类名由一个或多个单词组合而成,每个单词的受字母大写且其余字母全部小写;(object)表示该类对象继承自python内置的类对象object,python中所有的类对象都是继承自一个统一的基类:object
class SomeClass(object):
pass

初识属性:

行为(方法)是类中特别的函数

class Cat (object):
    def __init__(self,breed,name,age,health)
        self.breed = breed  #品种
        self.name = name  #昵称
        self.age = age  #年龄
        self.health = health  #健康状况

初识类的方法:

#跑
def run(self):
    print("Cat is running")
    
#喵
def miao(self):
    print("Cat is miaoing")
    
#吃
def miao(self):
    print("Cat is eating")

类的方法与函数的区别:

方法就是定义在类对象中的函数,方法与函数的区别在于:

  1. 定义方法时,方法的第一个形参表示调用该方法的实例对象,第一个形参的名称通常是self,也可以是其他名称
  2. 调用方法时,系统自动将调用改方法的实例对象作为实参传递给第一个形参,第一个实参会传给第二个形参,第二个实参传递给第三个形参,以此类推

跟据类对象创建实例对象的语法格式:类名([实参])

cat = Cat("波斯猫“,“喵喵”,1,“很好”)

print(cat.breed)
print(cat.name)
print(cat.age)
print(cat.health)

cat.run()
cat.miao()
cat.eat()

实例属性

实例属性指的是实例对象所绑定的属性

绑定实例属性(给实例对象绑定属性)的方式有两种

  1. 在类对象的内部(方法中)
    语法格式:self.属性名 = 属性值
    推荐在特殊方法__init__中进行绑定,这样,早创建实例对象后就会自动调用特殊方法__init__对实例对象进行初始化,从而绑定实例属性,如果在其他方法中进行绑定,可能需要手动调用方法后才会绑定
  2. 在类对象的外部
    python是动态语言。所以,在实例对象创建之后,可以对其动态地绑定属性。
    语法格式:实例对象.属性名 = 属性值
    如果指定名称的实例属性已经存在,则是对实例对象进行修改

访问实例属性的方式有两种

  1. 在类对象的内部(方法中)
    语法格式:self.属性名
  2. 在类对象的外部
    语法格式:实例对象.属性名
    之所以添加前缀“self”或“实例对象”,是为了表明实例属性被那个实例对象所绑定
class Myclass(object):
    def __init__(self):#在类对象的内部(方法中)绑定实例属性
        self.ial = 1S
    def do_sth1(self):#在类对象的内部(方法中)访问实例属性
        print(self.ia1)
    
    def do_sth2(self):
        print(self.ia2)
        
    def do_another(self):#在类对象的内部(方法中)绑定实例属性
    self.ia2 = 56
    
    def do_sth3(self):
        print(self.ia3)

实例属性.dict

可获得该实例对象所绑定的所有属性及其字典

mc.__dict__
mc2.__dict__

类属性

类属性指的是类对象所绑定的属性

绑定类属性(给类对象绑定属性)的方式有两种:

  1. 在对象的内部(方法外)
    语法格式:属性名 = 属性值
  2. 在类对象的外部
    python是动态语言。所以在类对象创建之后,可以对其动态地绑定属性。
    语法格式:类对象.属性名 = 属性值
    如果指定名称的类属性已经存在,则是对类属性进行修改

访问类属性的方式有两种:

1.在类对象的内部(方法中)
语法格式:类对象.属性名
2.在类对象的外部
语法格式:类对象.属性名或:实例对象.属性名

类对象的所有实例对象都有一个指向类对象的指针,所以,类对象的所有实例对象都可以访问类属性。

之所以添加前缀"类对象",是为了表明类属性被哪个类对象所绑定。

class MyClass (ob ject):
#在类对象内部 (方法外)绑定类属性
cal = 66

def do_ sth(self) :
#在类对象内部(方法中)访问类属性
print (MyClass. cal)

def do_ another (self) :
#在类对象内部(方法中)访问类属性
print (MyClass. ca2)

del p. age #删除实例对象p绑定的实例属性

  • 访问实例属性和类属性都可以通过"实例对象.属性名"的方式。当通过"实例对象.属性名"的方式访问属性时,会先查找指定的实例对象中有没有指定名称的实例属性,如果没有,再查找对应的类对象中有没有指定名称的类属性。所以,当通过"实例对象.属性名"的方式访问属性时,如果实例属性和类属性同名实例属性会屏蔽掉类属性。
  • 当通过"实例对象.属性名=属性值"的方式绑定属性时,这里的属性只表示实例属性(因为类属性没有这样的绑定方式),所以,只会查找指定的实例对象有没有绑定指定名称的实例属性,如果没有则进行绑定,如果已经绑定了,则对属性值进行修改。
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值