- 三大特点
- 继承
- 多态
- 面向对象的方法
- 静态成员
- 类方法
- 属性方法
- 其他基础知识:
- 成员修饰符
Python与c++一样,类的三大特性为封装,继承,多态。
继承语法:class A(B)表示A继承B
class Animal:
def eat(self):
print("%s吃"%self.name)
def drink(self):
print("%s喝"%self.name)
class cat(Animal):
def __init__(self,name):
self.name = name
class dog(Animal):
def __init__(self,name):
self.name = name
c1 = cat("布偶猫")
c1.eat()
c1.drink()
c2 = dog("萨摩耶")
c2.eat()
c2.drink()
关于多继承:
1.如果父类和子类都重新定义了构造方法init( ),在进行子类实例化的时候,子类的构造方法不会自动调用父类的构造方法,必须在子类中显示调用。
2.Python的类可以继承多个类
Python不支持多态,Python本身就是一种多态语言。
面向对象的方法 静态成员静态成员用装饰器@staticmethod,该装饰器下的所有函数与类截断了,即不属于该类,但是调用时还是要通过类名的方式调用
class cat:
def __init__(self,name):
self.name = name
@staticmethod
def eat(self):
print("")
c1 = cat("布偶猫")
c1.eat()
类方法
类方法用装饰器@classmethod,只能访问类变量,不能访问实例变量
class cat:
def __init__(self,name):
self.name = name
@classmethod
def eat(self):
print("$%s"%self.name)
c1 = cat("布偶猫")
c1.eat()
报错:AttributeError: type object 'cat' has no attribute 'name'
属性方法
属性方法用装饰器@property,作用是将一个方法变成一个静态属性
class cat:
def __init__(self,name):
self.name = name
@property
def eat(self):
print("%s"%self.name)
c1 = cat("布偶猫")
c1.eat //没有括号,因为此时eat已经不再是函数,而是一个静态属性
其他基础知识:
成员修饰符
python只有公有和私有两种成员类型,默认python中所有成员都是公有成员,私有成员是以两个下划线开头的名字,私有成员不可直接访问,也不能被继承
class cat:
def __init__(self,name):
self.name = name
self.__age = 18
c1 = cat("布偶猫")
print(c1.name)
print(c1.__age)
报错:AttributeError: 'cat' object has no attribute '__age'



