python------面向对象进阶

2021-05-18 06:30

阅读:309

@property


把一个方法变成一个静态属性。

class Dog(object):

def __init__(self, name):
self.name = name

@property # 属性方法不能传参数
def eat(self):
print("%s is eating %s" % (self.name, "包子"))

@eat.setter # 只能通过给属性赋值。
def eat(self, food):
print("set to food:", food)

@eat.setter # 删除属性

def eat(self):
del self.__food
print("删完了")


d = Dog("xiaolaizi")
d.eat

4.
类的特殊方法(成员)

1)__doc__: 查看描述文档
2)__module__: 查看当前操作的对象在哪个模块
__class__: 查看当前操作的对象的类是什么
3)__init__: 构造方法,通过类创建对象时,自动触发执行
4)__del__: 析构方法,当对象在内存中被释放时,自动触发执行。
注: 此方法一般无须定义,python是一门高级语言,程序员在使用时无须关心内存的分配和释放
因为此工作都是交给python解释器来执行的,所以,析构函数的调用是由解释器在进行垃圾回收时
自动触发执行的。
5)__call__: 对象后面加括号,触发执行
注:构造方法的执行时由创建对象触发的,即:对象 = 类名();
而对于__call__方法的执行
是由对象后面加括号触发的,即:对象()
或者
类()()
6)__dict__: 查看类或对象中的所有成员。

类.__dict__: 打印类里的所有属性,不包括实例属性
对象.__dict__: 打印实例属性,不包括类的属性。
7)__str__: 如果一个类中定义了__str__方法,那么在打印对象时,默认输出该方法的返回值。
8)__getitem__ / __setitem__ / __delitem__: 用于索引操作,如字典。以上分别表示获取、设置、删除数据。
9)__new__ / __metaclass__:


class Foo(object):
def __init__(self, name):
self.name = name


f = Foo("xiaolaizi")
上述代码中,f是通过Foo实例化的对象,其实,不仅f是一个对象,Foo类本身也是一个对象,因为在Python中
一切事物都是对象, 那么问题来了:Foo对象后的类又是谁呢???(生命的本源)


评论


亲,登录后才可以留言!