1、继承
class student:
def __str__(self):
return "student"
def printStudent(self):
print(self.__str__())
class graduateStudent(student):
def __str__(self):
return "graduateStudent"
graduateStudent().printStudent()
student().printStudent()
2、isinstance(obj,className)函数
判断一个对象是不是一个类的实例
print(isinstance(1,str))
print(isinstance("A",str))
2.1要确定一个类是否是另一个类的子类,可使用内置方法issubclass。
>>> issubclass(SPAMFilter, Filter)
True
>>> issubclass(Filter, SPAMFilter)
2.2 如果你有一个类,并想知道它的基类,可访问其特殊属性__bases__。
>>> SPAMFilter.__bases__
(<class __main__.Filter at 0x171e40>,)
>>> Filter.__bases__
(<class 'object'>,)
3、区分
class Person:
def __getInfo(self):
return "person"
def printPerson(self):
print(self.__getInfo())
class A(Person):
def __getInfo(self):
return "A"
A().printPerson()
Person().printPerson()
class Person:
def getInfo(self):
return "person"
def printPerson(self):
print(self.getInfo())
class A(Person):
def getInfo(self):
return "A"
A().printPerson()
Person().printPerson()
总结:私有函数不能被重写覆盖
4、property函数
class Rectangle:
def __init__ (self):
self.width = 0
self.height = 0
def set_size(self, size):
self.width, self.height = size
def get_size(self):
return self.width, self.height
size = property(get_size, set_size)
通过调用函数property并将存取方法作为参数(获取方法在前,
设置方法在后)创建了一个特性,然后将名称size关联到这个特性。这样,你就能以同样的方式
对待width、height和size,而无需关心它们是如何实现的。
>>> r = Rectangle()
>>> r.width = 10
>>> r.height = 5
>>> r.size
(10, 5)
>>> r.size = 150, 100
>>> r.width
150
实际上,调用函数property时,还可不指定参数、指定一个参数、指定三个参数或指定四
个参数。如果没有指定任何参数,创建的特性将既不可读也不可写。如果只指定一个参数(获
取方法),创建的特性将是只读的。第三个参数是可选的,指定用于删除属性的方法(这个方
法不接受任何参数)。第四个参数也是可选的,指定一个文档字符串。这些参数分别名为fget、
fset、fdel和doc。如果你要创建一个只可写且带文档字符串的特性,可使用它们作为关键字参
数来实现。