dir内置函数
查看对象方法列表: 标识符/数据.+TAB
查看对象属性和方法: dir(标识符/数据)
定义简单类
定义只包含方法的类
方法的定义和函数基本一样,区别在于第一个参数必须是Self
创建对象
引用概念的强调
class Cat:
"""这是一个猫类"""
def eat(self):
print("小猫爱吃鱼")
def drink(self):
print("小猫爱喝水")
#创建猫对象
tom = Cat()
tom.eat()
tom.drink()
print(tom)
addr = id(tom)
print("%d" % addr)
print("%x" % addr)
同一个猫类,两个不同的猫对象
class Cat:
"""这是一个猫类"""
def eat(self):
print("小猫爱吃鱼")
def drink(self):
print("小猫爱喝水")
# 创建猫对象
tom = Cat()
tom.eat()
tom.drink()
print(tom)
# 再创建一个猫对象
lazy_cat = Cat()
lazy_cat.eat()
lazy_cat.drink()
print(lazy_cat)
lazy_cat2 = lazy_cat
print(lazy_cat2)
方法中的self参数
对象属性应该封装在类的内部,不推荐在类外给对象添加属性
因为一般在类外创建先调用对象方法,再设置对象属性会直接报错
```python
class Cat:
"""这是一个猫类"""
def eat(self):
# 哪一个对象调用得到方法,self就是哪一个对象的引用
print("%s 爱吃鱼" % self.name)
def drink(self):
print("%s 爱喝水" % self.name)
# 创建猫对象
tom = Cat()
tom.eat()
tom.drink()
# 可以使用 .属性名,利用赋值语句就可以了
tom.name = "Tom"
print(tom)
初始化方法
在初始化方法内部定义属性
class Cat:
def __init__(self):
print("这是一个初始化方法")
# self.属性名 = 属性的初始值
self.name = "Tom"
# 使用类名()创建对象的时候你,会自动调用初始化方法 _init_
tom = Cat()
print(tom.name)
初始化的同时设置初始值
class Cat:
def __init__(self, new_name):
print("这是一个初始化方法")
# self.属性名 = 属性的初始值
self.name = new_name
def eat(self):
print("%s 爱吃鱼" % self.name)
# 使用类名()创建对象的时候你,会自动调用初始化方法 _init_
tom = Cat("Tom")
tom.eat()
lazy_cat = Cat("大懒猫")
lazy_cat.eat()
其它内置方法和属性
_del_方法
class Cat:
def __init__(self, new_name):
self.name = new_name
print("%s 来了" % self.name)
def __del__(self):
print("%s 去了" % self.name)
# tom是一个全局变量
tom = Cat("Tom")
print(tom.name)
# del 关键字可以删除一个对象
del tom
print("-" * 50)
_str_方法
class Cat:
def __init__(self, new_name):
self.name = new_name
print("%s 来了" % self.name)
def __del__(self):
print("%s 去了" % self.name)
def __str__(self):
# 必须返回一个字符串
return "我是小猫【%s】" % self.name
# tom是一个全局变量
tom = Cat("Tom")
print(tom)