(了解)类的补充内容和高阶知识
- 判断类型
学过类后对这两个函数更加理解。type()返回的是类型。isinstance判断是第一个参数是不是第二个参数的实例。
a = 1
b = 'hello'
class Student():
pass
c = Student()
d = True
print(type(a)) # <class 'int'>
print(isinstance(1, int)) # True 。 int是一个内置类
print(isinstance(c, Student)) # True
print(type(c)) # <class '__main__.Student'>
- dir()
dir() directory文件目录,列出一个类中的所有方法,返回列表。
[‘class’, ‘delattr’, …‘init’, ‘run’]
形如__xxx__这些名字的函数都有特殊用途。
class 类自己 __doc__文档 repr __str__类名信息
class Animal(object):
def __init__(self, name):
self.name = name
def run(self):
print('动物在跑')
def __str__(self):
return ''
print(dir(Animal))
- slots
由于python是动态语言,类在运行的时候可能会被攻击添加新的属性存放恶意信息,导致安全问题。slots = (属性1,属性2, …) 确定了类中有哪些属性,在程序运行时,往类中添加属性,如果新添加的属性不在__slots定义当中,就会报错。从而确保类属性不能被随意修改,确保安全。
class Student():
__slots__ = ('name', 'score')
def __init__(self, name, score):
self.name = name
self.score = score
xiaoming = Student('小明', 59)
xiaoming.score = 80
xiaoming.score1 = 'eval("python xx.py")'
print(xiaoming.score1)
- 多重继承
一个子类具备多个父类的特征
class Animal(object):
pass
class Cartoon(object):
pass
class Dog(Animal):
pass
class HelloKitty(Animal, Cartoon): # 有几个父类写几个,逗号分隔
pass
- 软件设计模式