面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类
而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。
定义类通过class关键字
class Student(object):
pass
class后面跟着的是类名,类名通常大写开头的单词,object表示从哪个类继承的
通常,如果没有合适的继承类,就使用object类
定义好了类,可以根据类名创建对应的实例,创建实例是通过类名+()实现的:
bart = Student()
可以给实例的变量绑定属性
bart.name = 'Bart Simpson'
由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。
通过定义一个特殊的__init__方法,在创建实例的时候,就把name,score等属性绑上去:
class Student(object):
def __init__(self,name,score):#特殊方法“__init__”前后分别有两个下划线!!!
self.name = name
self.score = score
bart = Student('Bart Simpson',59)
有了__init__方法,在创建实例的时候不能传入空的参数,必须传与之匹配的参数
self不需要传,解释器会自动把实例变量带进去
和普通函数相比,类中定义的函数只有一点不同,就是第一个参数永远是self,并且调用时候,不用传该参数
除此之外,类方法的函数和普通函数没区别,仍然可以用默认参数,可变参数,关键字参数和命名关键字参数
数据封装
面对对象编程一个重要特点就是数据封装
在上面的Student类中,每个实例就拥有各自的name和score这些数据。
我们可以通过函数来访问这些数据,比如打印一个学生的成绩
def print_score(std):
print('%s: %s' % (std.name, std.score))
print_score(bart)
但是既然Student类本身就有数据,要访问这些数据,就没有必要从外面的函数去访问
可以直接在Student类的内部定义访问数据的函数,这样,就把“数据”给封装起来了。
这些封装数据的函数是和Student类本身是关联起来的,我们称之为类的方法:
class Student1(object):
def __init__(self,name,score):#特殊方法“__init__”前后分别有两个下划线!!!
self.name = name
self.score = score
def print_score(self):#数据封装
print('%s: %s' % (self.name, self.score))
Peter = Student1('Peter',99)
Peter.print_score()
这样打印的操作都在类的内部定义好,我们只需要知道创建实例的时候给什么参数,然后调用
封装的另一个好处是可以给Student类增加新的方法,比如get_grade:
class Student2(object):
def __init__(self,name,score):#特殊方法“__init__”前后分别有两个下划线!!!
self.name = name
self.score = score
def print_score(self):#这是下面数据封装的代码 类的方法
print('%s: %s' % (self.name, self.score))
def get_grade(self):#给类添加新方法
if self.score >= 90:
return 'A'
elif self.score >=60:
return 'B'
else:
return 'C'
kael = Student2('kael',99)
print(kael.name,kael.get_grade())
面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类
而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。
定义类通过class关键字
class Student(object):
pass
class后面跟着的是类名,类名通常大写开头的单词,object表示从哪个类继承的
通常,如果没有合适的继承类,就使用object类
定义好了类,可以根据类名创建对应的实例,创建实例是通过类名+()实现的:
bart = Student()
可以给实例的变量绑定属性
bart.name = 'Bart Simpson'
由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。
通过定义一个特殊的__init__方法,在创建实例的时候,就把name,score等属性绑上去:
class Student(object):
def __init__(self,name,score):#特殊方法“__init__”前后分别有两个下划线!!!
self.name = name
self.score = score
bart = Student('Bart Simpson',59)
有了__init__方法,在创建实例的时候不能传入空的参数,必须传与之匹配的参数
self不需要传,解释器会自动把实例变量带进去
和普通函数相比,类中定义的函数只有一点不同,就是第一个参数永远是self,并且调用时候,不用传该参数
除此之外,类方法的函数和普通函数没区别,仍然可以用默认参数,可变参数,关键字参数和命名关键字参数
数据封装
面对对象编程一个重要特点就是数据封装
在上面的Student类中,每个实例就拥有各自的name和score这些数据。
我们可以通过函数来访问这些数据,比如打印一个学生的成绩
def print_score(std):
print('%s: %s' % (std.name, std.score))
print_score(bart)
但是既然Student类本身就有数据,要访问这些数据,就没有必要从外面的函数去访问
可以直接在Student类的内部定义访问数据的函数,这样,就把“数据”给封装起来了。
这些封装数据的函数是和Student类本身是关联起来的,我们称之为类的方法:
class Student1(object):
def __init__(self,name,score):#特殊方法“__init__”前后分别有两个下划线!!!
self.name = name
self.score = score
def print_score(self):#数据封装
print('%s: %s' % (self.name, self.score))
Peter = Student1('Peter',99)
Peter.print_score()
这样打印的操作都在类的内部定义好,我们只需要知道创建实例的时候给什么参数,然后调用
封装的另一个好处是可以给Student类增加新的方法,比如get_grade:
class Student2(object):
def __init__(self,name,score):#特殊方法“__init__”前后分别有两个下划线!!!
self.name = name
self.score = score
def print_score(self):#这是下面数据封装的代码 类的方法
print('%s: %s' % (self.name, self.score))
def get_grade(self):#给类添加新方法
if self.score >= 90:
return 'A'
elif self.score >=60:
return 'B'
else:
return 'C'
kael = Student2('kael',99)
print(kael.name,kael.get_grade())
文章来源: 松勤网
-
人生很长也很短经典语录 出门溜达幽默说说 不想放弃一段感情的话 以变化为话题的作文 简单干净的微信号 独特简单的网名 现实表现材料 励志的短句 期末个人总结 表达真诚感谢的句子 家人离世时发的朋友圈句子 有意境的网名 宝宝醒的太早的幽默说说 女生网名简单干净 带玲字的有深意的网名 值周总结 断舍离经典语录 家族群名 复试报告 给家长的一封信 工作总结范文 宿舍群名 晚安精辟一句话万人点赞 神id 传人闲话的朋友圈 事业低谷期文案短句 高考祝福语四个字 兄弟文案高质量 党课学习小结 未来世界作文(0) 回复 (0)
-
讨债公司/蓝月传奇辅助/蓝月辅助(0) 回复 (0)
-
讨债公司 搬家公司 蓝月传奇辅助(0) 回复 (0)