以C语言为代表的面向过程的编程语言,核心思想是以计算机能够理解的逻辑去分析问题解决问题,算法和数据结构是关键。
Python既可以面向过程,也可以面向对象。
面向对象的核心思想是以符合人的思维习惯去分析问题、分解问题、解决问题。万物皆对象。 关注特征和行为。
1.分析对象,定义对象的需要关注的属性、特征、方法、行为,总结出其中的关系。
2.类定义对象代码模板(蓝图),Class关键字。
3.实例化(内存对象),模拟过程。
多态:属于同一类型的不同实例,对同一个消息做出不同的响应。
import datetime
class Book:
# 初始化,参数可以有默认值。self为实例化对象
def __init__(self, title, price=0.0, author='', publisher=None, pubdate=datetime.date.today()):
self.title = title
self.price = price
self.author = author
self.publisher = publisher
self.pubdate = pubdate
def __repr__(self): #Terminal下显示的信息
return '<图书 {}>'.format(self.title)
def print_info(self):
print('信息如下:')
print('标题:{}'.format(self.title))
print('定价:{}'.format(self.price))
print('作者:{}'.format(self.author))
print('出版社:{}'.format(self.publisher))
print('出版时间:{}'.format(self.pubdate))
book1 = Book('Python', 30, 'Tom', '工作室', datetime.date(2020, 2, 22))
book1.print_info()
book2 = Book('C#入门')
book2.price = 55
book2.print_info()
----------------------
class Book:
def __init__(self, title, price=0.0, author=None):
self.title = title
self.price = price
self.author = author
# 控制台输出类信息
def __repr__(self):
return '<图书:{} at 0x{}>'.format(self.title, id(self))
def print_info(self):
print(self.title, self.price, self.author)
# 调用print产生的结果,若没写,默认使用__repr__内置方法
def __str__(self):
return '<图书:{},定价:{}>'.format(self.title, self.price)
import datetime
class Student:
def __init__(self, name, birthdate):
self.name = name
self.birthdate = birthdate
# 属性age
@property
def age(self):
return datetime.date.today().year - self.birthdate.year
# 禁止年龄赋值
@age.setter
def age(self, value):
raise AttributeError('禁止赋值')
# 禁止删除
@age.deleter
def age(self, value):
raise AttributeError('禁止删除')
if __name__ == '__main__':
s = Student('Tom', datetime.date(1989, 2, 10))
print(s.birthdate)
print(s.get_age)