3. python中的类与对象

前言

一切皆对象
  Python中的万物都是类与对象,甚至一个int数也是一个类对象,这点与C++和Java稍有不同。

动态绑定
  下面一点学过C++的可能有些不适应。python中同一个类在创建对象后,每个对象可以为自己对象声明不同的属性和方法.

1. 定义类

class Students:
    # 初始化方法
    def __init__(self, age, name):
        self.age = age
        self.name = name
    # 1.类变量:所有对象都有这个变量
    nativePlace = '吉林'

    # 2.对象方法:只能对象调用,可动态绑定
    def eat(self):
        print('学生在吃饭...')

    # 3.静态方法:
    @staticmethod
    def method():
        print('我使用了static修饰')

    # 4.类方法:所有对象都拥有的方法,可通过对象和类调用
    @classmethod
    def cm(cls):
        print('我是类方法')

在上面这个类声明中,我们定义了:

(下面的名字自己起的,学过C++的可能更好理解)

  • 初始化方法
  • 类属性
  • 对象属性
  • 对象方法
  • 类方法
  • 静态方法
    我们将逐一介绍。
1.1 类属性

  一旦在类中声明,类的对象都会有这个属性,所以称之为类属性。比如上面的nativePlace

1.1 对象属性

  对象属性可以是每个对象所独有的属性,比如stu1有sex这个属性,而stu2有height这个属性。对象属性一般不在类中声明,而是在对象创建后动态绑定。
  但上面的name和age,我们可以称之为对象属性,因为:
尽管在这里每个对象在创建时都会拥有name和age这两个属性且值相同,但这种类型的属性在后面可以动态绑定。比如:

stu1.sex='男'

这时stu2就没有这个属性。

1.3 初始化方法
# 初始化方法
def __init__(self, age, name):
    self.age = age
    self.name = name

  初始化方法在创建每一个对象的时候会被调用。
里面有两个属性:name和age,我称这种为对象属性

1.4 对象方法

对象方法是每个对象所独有的,也可以动态绑定,但上面的:

    def eat(self):
        print('学生在吃饭...')

  虽然每个对象都有这个方法,但这种的方法是可以动态的,所以仍称之为对象方法.
  对象方法有两种调用格式:

stu1.eat()
Students.eat(stu1)
1.5 类方法

类方法就是属于这个类的,通过类名或对象调用,但通过对象调用时不用传对象。

Students.cm()
stu1.cm()
总结

类方法和对象方法都能通过类名和对象名调用,但这两种方法的区别还是对象方法可以动态绑定。

2. 动态绑定

动态绑定是对象属性和对象方法

class Students:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def drink(self):
        print('eat')


stu1 = Students(20, '张三')
stu2 = Students(21, '李四')
print('------为stu2动态绑定属性-----')
stu2.gender = '女'
print(stu2.gender)

print('------为stu2动态绑定办法-----')
def show():
    print('show for stu2')

stu2.show = show
stu2.show()

此时stu1是没有这个show方法和gender属性的。

3. 多态和继承

python的类同样有封装、多态和继承的特性…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值