Python学习笔记05——类的创建及使用

1类的定义

1.1类的组成

属性 具体属性 特点
方法 构造方法 构造方法用于构造实例对象,__init__,传入参数第一个必须是self
方法 成员方法 成员方法定义在类中,第一个参数必须是self,方法前加__
方法 私有方法 私有方法不能由外部调用,第一个参数必须是self
方法 静态方法 静态方法不依赖于实例对象,同时也不能调用类方法和类属性,用@staticmethod修饰
方法 类方法 类方法不依赖实例对象,但是必须传入参数cls,代表类本身,因此可以调用类方法和变量,用classmethod修饰
属性 成员属性 在构造方法中定义的属性,可由实例对象调用
属性 私有属性 在构造方法中定义的属性,只能由类对象内部调用,属性名前加__
属性 类属性 在类中定义的属性,不依赖实例对象调用

1.2类的定义格式

定义格式如下:

lass ClassName:
    clsname=“”#定义类变量

    @staticmethod#定义静态方法,静态方法不依托实例对象存在,但是也不能调用成员变量和成员方法
    def staticname():
        
	@classmethod#定义类方法,类方法不依托实例对象存在,同时类变量需要传入cls参数(类本身参数),因此可以调用和修改类变量
    def classmethodname(cls):
        
    def__init__(self,arg1,arg2):#定义构造方法,需要传入固定self参数(实例对象本身)#####__init__千万不能写成int
        self.arg1=arg1         #定义成员属性
        self.__arg2=arg2       #定义私有属性,外部不可访问和调用,只能通过类成员方法访问

    def set_arg2(self):              #定义成员方法,可以修改私有属性
        
    def __method(self)               #定义私有方法,外部不可调用,只能通过成员方法调用

实例演示如下:

>>> class Dog:
...     classname="狗类"
...     @staticmethod
...     def state():
...         print("这是一个狗类")
...     @classmethod
...     def favorite(cls):
...         print(cls.classname+":狗喜欢吃骨头")
...     def __init__(self,name,age):
...         self.name=name
...         self.__age=age
...     def set_age(self,age):
...         if not isinstance(age,int):
...             print("年龄必须是整数!")
...         elif age<=0:
...             print("年龄必须大于0!")
...         else:
...             self.__age=age
...     def show(self):
...         self.play()
...     def play(self):
...         print("汪汪汪")
...
>>> Dog.classname
'狗类'
>>> Dog.favorite()
狗类:狗喜欢吃骨头
>>> dog.name
'旺财'
>>> dog.set_age(5)
>>> dog.show()
汪汪汪
>>> 

2类的继承和多态

2.1类的继承

继承语法如下:

class SubClass(BaseClass1,BaseClass2):
语法块

注意:
1.继承直接在类名后面加括号、带上父类名称;
2.python中可以继承多个类;
3.子类不能继承父类的私有方法,也不能调用;

2.2类的多态

子类对父类的同名方法进行复写。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章