类
class Person():
def __init__(self):
pass
def set_name(self, name):
self.name = name
def get_name(self):
return self.name
def greet(self):
print("Hello, world! I'm {}.".format(self.name))
面对对象三要素
- 封装:
通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。
- 继承:
继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。
- 多态:
多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。
抽象类
必须导入abc 模块才能定义抽象类
import abc
class shuiguo(metaclass=abc.ABCMeta):
all_type='sg'
@abc.abstractmethod #定义抽象方法,无需实现功能
def name(self):
pass
@abc.abstractmethod #定义抽象方法,无需实现功能
def func(self):
pass
class Apple(shuiguo): #子类继承抽象类,可是必须定义read和write方法
def name(self):
print('我是苹果')
def func(self):
print('好吃')
class Pear(shuiguo): #子类继承抽象类,可是必须定义read和write方法
def name(self):
print('我是梨子')
def func(self):
print('yunfeizhike')
抽象类与普通类的不同之处在于:抽象类中有抽象方法,该类不能被实例化,只能被继承,且子类必须实现抽象方法
内置方法检查或是访问对象属性
用法 | 含义 |
---|---|
dir([obj]) | 返回包含obj大多数属性名的列表(会有一些特殊的属性不包含在内) |
hasattr(obj, attr) | 检查obj是否有一个名为attr的值的属性,返回一个布尔值。 |
getattr(obj, attr) | 调用这个方法将返回obj中名为attr值的属性的值 |
setattr(obj, attr, val) | 调用这个方法将给obj的名为attr的值的属性赋值为val |
type(obj) | 判断对象类型,使用type()函数 |