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
发布了70 篇原创文章 · 获赞 29 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/LOVEYSUXIN/article/details/103372614