Python 类

一、属性和方法

举例:

class Person:
    def set_name(self,name):
        self.name=name
    def get_name(self):
        return self.name
    def greet(self):
        print("Hello,world!I am {}.".format(self.name))

Python 类_第1张图片

不同实例的属性值互不影响

class MemberCounter:
    members=0
    def init(self):
        MemberCounter.members +=1

Python 类_第2张图片

二、超类与子类

继承以及方法重写

class Filter:
    def init(self):
        self.blocked=[]
    #     过滤器
    def filter(self,sequence):
        # 迭代+判断
        return [x for x in sequence if x not in self.blocked]
class SPAMFilter(Filter): #SPAMFilter是Filter的子类
    def init(self):#重写init方法
        self.blocked=['SPAM']

Python 类_第3张图片

内置函数

Python 类_第4张图片
所有的类都继承object

前者是不是后者的实例

Python 类_第5张图片

返回对象的类两种方法

Python 类_第6张图片

三、多重继承

class Calculator:
    def calculator(self,expression):
        self.value=eval(expression)
class Talker:
    def talk(self):
        print('Hi , my value is',self.value)
class TalkingCalculator(Calculator,Talker):
    pass

Python 类_第7张图片

四、抽象基类

from abc import ABC,abstractmethod
class Talker(ABC):
    @abstractmethod
    def talk(self):
        pass
class Knigget(Talker):
    def talk(self):
        print("Ni!")

Python 类_第8张图片

虽然没有继承关系,但是方法一致,就可以通过register注册

Python 类_第9张图片

没有继承的空类并不能直接使用其他类的方法

from abc import ABC,abstractmethod
class Talker(ABC):
    @abstractmethod
    def talk(self):
        pass
class Knigget(Talker):
    def talk(self):
        print("Ni!")
class Herring:
    def talk(self):
        print("Blub.")
class Clam:
    pass

Python 类_第10张图片

Python 类_第11张图片

你可能感兴趣的:(Python,python,开发语言)