Contents
7.5. 类中调用自身方法和函数¶
7.5.1. 类中调用自身¶
代码示例¶
#!/usr/bin/env python
#-*- coding:utf8 -*-
#定义一个函数,求绝对值
def func(x,y):
return (abs(x),abs(y))
class Ant:
"""
定义类
"""
def __init__(self,x=0,y=0):
"""
构造方法
:param x: 0
:param y: 0
:return:
"""
self.x = x
self.y = y
self.disp_potion() #用属性调用自身的方法
def move(self,x, y):
"""
:param x: 过绝对值函数后的x值
:param y: 过绝对值函数后的y值
:return:
"""
x,y = func(x, y) #调用外部函数
self.edit_potion(x, y)
self.disp_potion() #调用自身方法
def edit_potion(self, x, y):
"""
对初始值0修改,进行+,加的值是edit方法的2个参数
:param x:
:param y:
:return:
"""
self.x += x
self.y += y
def disp_potion(self):
print("当前位置{} {}".format(self.x,self.y))
hujianli = Ant()
hujianli.move(2,4)
hujianli.move(-9,6)
7.5.2. 类中定义内部类¶
#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2019/7/20 15:17
# filename: 类中定义内部类.py
class Car:
class Door:
def open(self):
print("open door....")
class Wheel:
def run(self):
print("car run")
if __name__ == '__main__':
car = Car() #实例化car
backDoor = car.Door() #内部类的实例化1
frontDoor = car.Door() #内部类的实例化2
backDoor.open()
frontDoor.open()
wheel = car.Wheel()
wheel.run()
输出信息:
open door....
open door....
car run
7.5.3. python的垃圾回收机制¶
简单了解一下即可,python自带垃圾回收机制
#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2019/7/20 15:24
# filename: python的垃圾回收机制.py
import gc
class Furit:
def __init__(self, name, color): # 初始化name、color属性
self.__name = name
self.__color = color
def getColor(self):
return self.__color # 返回color
def setColor(self, color):
self.__color = color # 定义color
def getName(self):
return self.__name # 返回name
def Setname(self, name):
self.__name = name # 定义name
class FruitShop:
def __init__(self):
self.fruits = []
def addFruit(self, fruit):
"""
添加水果
:param fruit:
:return:
"""
fruit.parent = self # 把Fruit类关联到FruitShop类
self.fruits.append(fruit)
if __name__ == '__main__':
shop = FruitShop()
shop.addFruit(Furit("apple", "red")) # 向shop对象中添加两个fruit对象
shop.addFruit(Furit("banana", "yellow"))
print(gc.get_referrers(shop)) # 打印出shop关联的所有对象
del shop
print(gc.collect()) # 显示地调用垃圾回收器
输出信息
[{'parent': <__main__.FruitShop object at 0x00000141ACEE5B70>, '_Furit__color': 'red', '_Furit__name': 'apple'}, {'parent': <__main__.FruitShop object at 0x00000141ACEE5B70>, '_Furit__color': 'yellow', '_Furit__name': 'banana'}, {'__spec__': None, 'FruitShop': <class '__main__.FruitShop'>, '__package__': None, '__doc__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x00000141A9D810F0>, '__name__': '__main__', '__builtins__': <module 'builtins' (built-in)>, 'shop': <__main__.FruitShop object at 0x00000141ACEE5B70>, 'Furit': <class '__main__.Furit'>, 'gc': <module 'gc' (built-in)>, '__cached__': None, '__file__': 'D:/GitHub/21_staduy_python/8.面对对象编程初探/面向对象程序学习/python类的特殊方法/python的垃圾回收机制.py'}]
372