Python3-面向对象编程
2018-01-02 本文已影响201人
梦蕊dream
Self
image.png
image.png
类
基础演示:
class Person:
pass
p = Person()
print(p)
输出信息:
<__main__.Person object at 0x101ebb588>
方法
基础演示
class Person:
# pass
def name(self):
print('Person name')
p = Person()
p.name()
print(p)
输出结果:
Person name
<main.Person object at 0x101ebb588>
init 初始化方法
基础演示
class Person:
# pass
def __init__(self, name):
self.name = name
def pname(self):
print('Person name:',self.name)
p = Person('Tom')
p.pname()
print(p)
# 简化写法
# Person('Tom').name()
输出结果:
Person name: Tom
<main.Person object at 0x1041034a8>
类变量与对象变量
image.png
示例代码
class Student:
num = 0
def __init__(self,name):
self.name = name
print('Student init :',self.name)
Student.num = Student.num + 1
def home_work(self):
print('my name is :',self.name)
def delStu(self):
print('Remove stu :',self.name)
Student.num = Student.num - 1
if Student.num == 0:
print('{} is the last one :'.format(self.name))
else:
print('There are {:d} students:'.format(Student.num))
@classmethod
def classNum(cls):
print('the class have {:d} students:'.format(Student.num))
xiaoming = Student('xiaoming')
xiaoming.home_work()
zhangsan = Student('zhangsan')
zhangsan.home_work()
lisi = Student('lisi')
lisi.home_work()
wangwu = Student('wangwu')
wangwu.home_work()
Student.classNum()
wangwu.delStu()
zhangsan.delStu()
Student.classNum()
输出结果
Student init : xiaoming
my name is : xiaoming
Student init : zhangsan
my name is : zhangsan
Student init : lisi
my name is : lisi
Student init : wangwu
my name is : wangwu
the class have 4 students:
Remove stu : wangwu
There are 3 students:
Remove stu : zhangsan
There are 2 students:
the class have 2 students:
对象变量采用 “self.name”访问,类变量采用“Student.num”来访问。当对象变量和类变量同名时,类变量就会被隐藏。还可以使用“self.class.num”来访问类对象。
使用@classmethod来定义类方法,或“@staticmethod”定义静态方法。
继承
示例代码:
image.png
输出结果:
image.png
如何工作:
image.png