类
语法:
class ClassName:
expression
示例:
# 创建类
class Person:
# 构造函数
def __init__(self,name,sex,age):
self.age = age
self.sex = sex
self.name = name
# 自我介绍
def self_introduce(self):
print('invoke Person.self_introduce')
return'我的名字是{}, 我是一个{}孩, 我今年{}岁'.format(self.name,self.sex,self.age)
if __name__ == '__main__':
p1=Person("张三","男",18)
print(p1.self_introduce())
# del p1.name #删除属性
# print(p1.name) #报错
# del p1 # 删除对象
# print(p1.name) #报错
运行结果:
invoke Person.self_introduce
我的名字是张三, 我是一个男孩, 我今年18岁
继承
语法:
class ClassName(ParentClassName):
expression
示例:
# 继承
class Woman(Person):
def __init__(self,name,sex): # java 中的构造方法
super().__init__(name,sex,0)
self.name = name
self.sex = sex
def __init__(self,name,sex,age): # java中的构造方法, python中有多个只有最后一个会生效
Person.__init__(self,name,sex, age) # java 中的 super()
def self_introduce(self):
print('invoke Woman.self_introduce')
return Person.self_introduce(self)
if __name__ == '__main__':
han_mei_mei = Woman("han mei mei",'girl',18)
print( han_mei_mei.self_introduce())
输出:
invoke Woman.self_introduce
invoke Person.self_introduce
我的名字是han mei mei, 我是一个girl孩, 我今年18岁
注意:
有多个构造时只有最后一个生效,执行下面的语句
执行下面的语句
lucy = Woman("lucy",'girl') # 报错
报错:
Traceback (most recent call last):
File "/Users/xieming/workspace/z_study/Python/teach/类与对象", line 42, in <module>
lucy = Woman("lucy",'girl')
TypeError: __init__() missing 1 required positional argument: 'age'