20、python面向对象编程---类和实例(__init__、类的方法)

Python中,定义类是通过class关键字,class后面紧接着是类名;
可以自由地给一个实例变量绑定属性;

#Python中,定义类是通过class关键字,class后面紧接着是类名、()
class Student(object):
    pass

#变量b指向的就是一个Student的实例
b = Student()
print('b:',b)
#可以自由地给一个实例变量绑定属性,比如,给实例b绑定一个name属性
b.name ='lan'
print('b.name:',b.name)

输出结果:
b: <__main__.Student object at 0x00000228EC4BCBA8>
b.name: lan

类定义中的__init__方法

1、类可以起到模板的作用,因此,在类中通过定义一个特殊的__init__方法,
在创建实例的时候,就把name,score等必要的属性绑上去。

2、特殊方法“init”前后分别有两个下划线!!!
3、__init__方法的第一个参数永远是self,表示创建的实例本身,
因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。
4、和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self,并且,调用时,不用传递该参数
5、python里一个class不可以定义多个构造函数,一个class只能有一个用于构造对象的__init__函数,但python中的变量是无类型的,因此传给__init__的参数可以是任何类型;
python中的函数参数在定义时可以有默认值,可以让__init__函数接受多个参数,在后面的一些参数给出默认值的方法让__init__接受不同个数的参数,并且执行类型检查执行不同的代码,用上述方法实现类的构造函数的多态性。
案例如下:

'''类可以起到模板的作用,因此,在类中通过定义一个特殊的__init__方法,
在创建实例的时候,就把name,score等必要的属性绑上去。'''

'''1、特殊方法“__init__”前后分别有两个下划线!!!
   2、__init__方法的第一个参数永远是self,表示创建的实例本身,
因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。
   3、和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self,
并且,调用时,不用传递该参数
'''
class Student():
    def __init__(self, name, score):
        self.name = name
        self.score = score

'''有了__init__方法,在创建实例的时候,就不能传入空的参数了,
   必须传入与__init__方法匹配的参数,但self不需要传'''
# b = Student()    未传入参数,会报错

b=Student('Lan',20)
print('b.name:',b.name,'\nb.score:',b.score)


输出结果:
b.name: Lan 
b.score: 20

类的方法–将数据进行封装

通过在类中定义方法,从而将数据进行封装,如下例中的 print_stu方法和get_score方法。

注意到:所有类中定义的方法,第一个参数都是self,调用方法时,除了self不用传递,其他参数正常传入

class Student():
    def __init__(self,name,score):
        self.name = name
        self.score = score

    def print_stu(self):
        print('%s : %s' % (self.name, self.score))

    def get_score(self):
        if self.score >= 90:
            return 'A'
        elif self.score >= 70:
            return 'B'

b = Student('Lan',80)
#通过实例调用方法获取学生信息
b.print_stu()
print(b.get_score())

输出:
Lan : 80
B
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值