python 面向对象基础梳理二 之类属性与绑定方法

 

上一节介绍了,什么是面向对象,以及面向对象的基本使用 ,这一小节主要介绍

1、类的属性

2、绑定方法

下面是上节演示的代码 

class People:   # 定义类的名称
    country = 'china' # 类的属性

    def __init__(self, name, age): # 类的构造方法,这里的self 可以理解为实例的本身
        self.name = name  
        self.age = age    

    def eat(self): # 类的方法
        print('%s is eating' % (self.name))

    def learn(self): # 类的方法
        print("%s is learning ,his age is %s" % (self.name, self.age))


p1 = People('bob', 19) # 类的实例化,实例化一个p1 的人类
print(p1.country) # 打印 p1 的country 属性
p1.eat()# p1 的eat 方法
p1.learn() #p1 的learn 方法

  一、类有两种属性,包括数据属性和函数属性

1、类的数据属性,类的所有数据属性是对象共享的,内存地址都一样

# 输入 
class People:  # 定义类的名称
    country = 'china'  # 类的属性

    def __init__(self, name, age):  # 类的构造方法,这里的self 可以理解为实例的本身
        self.name = name
        self.age = age

    def eat(self):  # 类的方法
        print('%s is eating' % (self.name))

    def learn(self):  # 类的方法
        print("%s is learning ,his age is %s" % (self.name, self.age))

p1 = People('bob', 19)  # 类的实例化,实例化一个p1 的人类
p2 = People('jim', 18)  # 类的实例化,实例化一个p2 的人类
p3 = People('kk', 29)  # 类的实例化,实例化一个p3的人类

# 输出

49877888
49877888
49877888

2、类的函数据是绑定给对象的,称为绑定到对象的方法

类的函数属性属性是绑定给对象使用的,obj.method ,内存地址都不一样,如下所示
# 输入
class People:  # 定义类的名称
    country = 'china'  # 类的属性

    def __init__(self, name, age):  # 类的构造方法,这里的self 可以理解为实例的本身
        self.name = name
        self.age = age

    def eat(self):  # 类的方法
        print('%s is eating' % (self.name))

    def learn(self):  # 类的方法
        print("%s is learning ,his age is %s" % (self.name, self.age))

p1 = People('bob', 19)  # 类的实例化,实例化一个p1 的人类
p2 = People('jim', 18)  # 类的实例化,实例化一个p2 的人类
p3 = People('kk', 29)  # 类的实例化,实例化一个p3的人类

print(People.eat)
print(p1.eat)
print(p2.eat)
print(p3.eat)

# 输出
<function People.eat at 0x02DF3540>
<bound method People.eat of <__main__.People object at 0x02CE9590>>
<bound method People.eat of <__main__.People object at 0x02DF1CD0>>
<bound method People.eat of <__main__.People object at 0x02DF1D30>>

 

    二、绑定方法

定义类,并实例化三个对象

类的方法

# 输入
class People:  # 定义类的名称
    country = 'china'  # 类的属性

    def __init__(self, name, age):  # 类的构造方法,这里的self 可以理解为实例的本身
        self.name = name
        self.age = age

    def eat(self):  # 类的方法
        print('%s is eating' % (self.name))

    def learn(self):  # 类的方法
        print("%s is learning ,his age is %s" % (self.name, self.age))

p1 = People('bob', 19)  # 类的实例化,实例化一个p1 的人类
p2 = People('jim', 18)  # 类的实例化,实例化一个p2 的人类
p3 = People('kk', 29)  # 类的实例化,实例化一个p3的人类

类中定义的函数(没有被任何装饰器装饰的)是类的函数属性,类可以使用,但必须遵循函数的参数规则,有几个参数需要传几个参数

如下所示

# 输入

People.eat(p1)
People.eat(p2)
People.eat(p3)

输出
bob is eating
jim is eating
kk is eating

类中定义的函数(没有装饰器的),主要是给对象使用的,而且是绑定到对象的,绑定到不同的对象是不同的绑定方法,绑定给谁就由谁来调用,就会将本身当做第一个参数传入。

 

python中一切皆为对象,且python3中类与类型是一个概念,类型就是类

posted @ 2018-12-04 06:59  水滴石川  阅读(95)  评论(0)    收藏  举报