Python 笔记 5
类属性和类方法
类属性和类方法可以直接使用,无需实例一个对象:
类.属性
类.方法()
定义类属性:
class 类:
    属性1 = X
定义类方法:
class 类:
	@classmethod
    def 类方法(cls):
        pass
类属性和类方法同时使用:
import random
class Char:
    letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    digits = '0123456789'
	
    @classmethod
    def random_letter(cls):
        return random.choice(cls.letters)
	
    @classmethod
    def random_digits(cls):
        return random.choice(cls.digits)
print(Char.letters)
print(Char.random_digits())
静态方法
class 类:
    @staticmethod
    def 静态方法():
        pass
私有属性、方法
将属性或方法的名称用 __(两个下划线)开头即可把属性和方法变成私有。
import random
class Char:
    __letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    __digits = '0123456789'
	
    @classmethod
    def random_letter(cls):
        return random.choice(cls.__letters)
	
    @classmethod
    def random_digits(cls):
        return random.choice(cls.__digits)
继承
class 父类:
    父类的实现
    
class 子类(父类):
	子类的实现
class A:
    def __init__(self):
        self.apple = 'apple'
    
    def have(self):
        print('I hava an', self.apple)
class B(A):
	def __init__(self):
		super().__init__()
		self.banana = 'banana'
	
	def have(self):
		print('I hava an', self.banana)
继承链
class A:
	def have(self):
		print('I hava an apple')
class B(A):
	pass
class C(B):
	pass
在这里 A 是继承链的顶端,B 和 C 都是它的子类。
其实 A 也有继承,它继承自 object。任何类的根源都是 object 类。如果一个类没有指定所继承的类,那么它默认继承 object。
A 中也可以显式指明其继承于 object:
class A(object):
	def have(self):
		print('I hava an apple')
如果想要判断一个类是否是另一个类的子类,可以使用内置函数 issubclass()。
多继承
class A:
    def get_apple(self):
        return 'apple'
class B:
    def get_banana(self):
        return 'banana'
class C(A, B):
    pass