0
点赞
收藏
分享

微信扫一扫

python继承


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))

python继承_字符串

2.1要确定一个类是否是另一个类的子类,可使用内置方法issubclass。

python继承_子类_02

>>> 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()

python继承_字符串_03

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()

python继承_子类_04


总结:私有函数不能被重写覆盖

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。如果你要创建一个只可写且带文档字符串的特性,可使用它们作为关键字参
数来实现。


举报

相关推荐

0 条评论