第7章 面向对象程序设计
- 7.1 面向对象概述
- 7.2 类的定义
- 7.3 类的实例化
- 7.4 访问限制
- 7.5 继承
- 7.6 封装
- 7.7 多态
- 7.8 装饰器
- 7.9 特殊方法
7.3 类的实例化
类的实例化语法格式:
obj = ClassName(parameterlist)
参数说明
ClassName:类名
parameterlist:可选参数
obj:对象名,即实例名
类的实例化
# 定义类,只有类属性,没有类方法
class Book(object):
pass
book1 = Book()
print(book1)
output:
<__main__.Book object at 0x000001C838838CC8>
实例化后访问类属性
# 定义类,只有类属性,没有类方法
class Book(object):
title = 'python3'
price = 50
# 实例化
obj = Book()
print(obj)
print(obj.title)
output:
<__main__.Book object at 0x000001EFC64B8D08>
python3
实例化后访问类方法
# 定义类,既有类属性又有类方法
class Book(object):
title = 'python3' # title为类属性
price = 50
def computeprice(self, num): # printprice为类方法
totalprice = str(self.price * num)
print(self.title + ':', num, '册 ' + totalprice, '元')
book1 = Book()
book1.computeprice(2)
output:
python3: 2 册 100 元
实例属性,是指定义在类的方法中的属性,只作用于当前实例中。只能通过实例名访问。
实例化后访问实例属性
# 实例属性:实例属性在__init__中定义,是实例化后对象的属性,通过对象名.属性名访问,而类属性通过类名.属性名访问
class Rectangle(): # 定义类
length = 1 # 类属性
width = 1
def __init__(self, length, width): # 构造方法
self.length = length # 实例属性
self.width = width
def getPeri(self): # 类方法
peri = (self.length + self.width) * 2
return peri # 方法返回值
def getArea(self): # 类方法
area = self.length * self.width
return area
rect = Rectangle(3, 4) # 实例化
# 访问实例属性、类属性
print(Rectangle.length, Rectangle.width) # 类名.属性名
print(rect.length, rect.width) # 对象名.属性名
output:
1 1
3 4
# 拓展:对象是否有这个属性
print(hasattr(rect, 'length'))
print(hasattr(rect, 'width'))
output:
True
True
# 拓展:判断对象object是否为类class的实例
print(isinstance(rect,Rectangle))
output:
True