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
上一篇 下一篇

猜你喜欢

热点阅读