您的位置:首页 > 编程语言 > Python开发

Python面向对象-属性方法

2017-07-05 11:05 471 查看
# 类
#     包含属性和方法
#     属性包括实例变量和类变量
#         什么时候用到类变量: 中国人->国籍
#         私有属性: __name
#     方法:
#         构造方法
#         析构方法: 析构函数不管写不写都会执行  写相当于重构 不写:本身就有一个析构方法
# 对象
#     实例化一个类之后得到的对象
# 封装
#     把一些功能的实现细节不对外暴露
# 继承 实现关联和重用
#     代码的重用
#     单继承:
#     多继承:
#         2.7 经典类 深度优先搜索  新式类  广度优先
#         3.0 都是广度优先搜索
#         写成新式类
#         继承父类时 使用super写法: super(子类名称, self).__init__(父类的变量) #多继承时体现优势
# 多态
#     一种接口 多种实现 #animal基类 拓展猫狗等动物
# 组合的方式实现关联和重用:
#     self.person = Person(self.obj) #在类的init构造方法中直接实例化一个类来组合拓展 或者直接传入某对象

# 静态方法
#     只是名义上归类管理  实际上在静态方法里访问不了类或者类中的属性
# @staticmethod  # 静态方法实际上和类没什么关系了,截断了和类之间的关联,只是类下面的一个参数; 和类之间的关系就是 要通过类名来调用  类的工具包
# @classmethod  #类方法只能访问类变量不能访问实例变量
# @property   #属性方法 把一个方法变成一个静态属性
'''
#静态方法
class Dog(object):
def __init__(self, name):
self.name = name

@staticmethod # 静态方法实际上和类没什么关系了,截断了和类之间的关联,只是类下面的一个参数; 和类之间的关系就是 要通过类名来调用
#类的工具包
def eat(self, food):
print("%s is eating %s" %(self.name, food))

d = Dog("LL")
d.eat("包子")
'''
'''
#类方法
class Dog(object):
n = 333
def __init__(self, name):
self.name = name
self.n = 444

@classmethod  #类方法只能访问类变量不能访问实例变量
def eat(self, food):
print("%s is eating %s" %(self.n, food))

d = Dog("LL")
d.eat("包子")
'''
#属性方法
class Dog(object):
def __init__(self, name):
self.name = name
self.__food = None

@property   #属性方法 把一个方法变成一个静态属性
def eat(self):
print("%s is eating %s" %(self.name, self.__food))
@eat.setter  #给属性方法赋值 要写在属性方法的下面
def eat(self, food):
print("set food:", food)
self.__food = food
@eat.deleter  #给属性方法删除值
def eat(self):
del self.__food
print("删完了")

d = Dog("LL")
d.eat
d.eat = "米田共"
d.eat

# del d.name #name属性被删除
# d.eat

# del d.eat #属性方法删除
# d.eat
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: