学习日志(四) Python面向对象


这里写图片描述
面向对象知识点思维导图

1. Python的编程方式

​ 面向对象:对函数进行分类和封装,让开发“更快更好

​ 面向对象的开发核心是对象

2. Python 类与对象

​ 类是对象的类型,对象是类的实例。类是抽象的概念,而对象是一个你能够摸得着,看得到的实体

3. 类的声明和实例化

3.1 创建类

​ 使用class语句来创建一个新类,class之后为类的名称并以冒号结尾

3.2 实例化类

​ 类的实例化类似于函数的调用

3.2 调用类的方法

​ 可使用.的方法来访问类的属性, 或使用getattr()函数也可访问属性

3.4 构造函数

init:是一个特殊的方法属于类的专有方法,被称为类的构造函数或初始化方 法,方法的前面和后面都有两个下划线。这是为了避免Python默认方法和普通方法发 生名称的冲突。每当创建类的实例化对象的时候,init()方法都会默认被运行。 作用就是初始化已实例化后的对象。

_xxx:保护变量

​ 意思是只有类对象和子类对象能够访问到这些变量尽量避免

3.5 self类的实例

​ self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。 类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例 它的名称是 self。self并不是Python的关键字,你完全可以用其他单词取代他,只是按照惯例和标准的规定,推荐使用self

class People:
    def __init__(self,n,a,w):
        self.name=n
        self.age=a
        self.__weight=w

    def speak(self):
        print('%s 说我今年 %d 岁' %(self.name, self.age))
x=People('小明',10,100)
x.speak()

4. 类的属性和方法

​ 常见针对类的属性的一些方法 可以使用实例化对象名+.来访问对象的属性 也可以使用以下函数的方式来访问属性

​ getattr(obj, name[, default]) : 访问对象的属性

​ hasattr(obj,name) : 检查是否存在一个属性

​ setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性

​ 这里,name需要加单引号,obj为实例化对象名称

class People:
    def __init__(self,n,a,w):
        self.name=n
        self.age=a
        self.__weight=w

    def speak(self):
        print('%s 说我今年 %d 岁' %(self.name, self.age))
x=People('小明',10,100)
x.speak()

print(getattr(x, 'age'))#访问对象属性
setattr(x,'age',8)#增加age属性
print(x.age)
print(hasattr(x,'ehbs'))#判断是否存在ehbs这个书信,返回boll值
print(getattr(x, 'age'))

print(x.__dict__)#类的属性(包含一个字典,由类的数据属性组成)
print(x.__doc__)#类的文档字符串 
print(x.__module__)#类定义所在的模块

类的私有属性和私有方法

  1. 类的私有属性 private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或 直接访问。在类内部的方法中使用时 self.private_attrs

  2. 类的方法 在类的内部,使用 def 关键字可以为类定义一个方法,与一般函数定义不同,类方 法必须包含参数 self,且为第一个参数

  3. 类的私有方法 private_method:两个下划线开头,声明该方法为私有方法,不能在类地外部 调用。在类的内部调用 self.private_methods
    (强行调取私有属性可在私有属性钱加 类名_私有属性,如下例所示 )

class MyClass:
    __personCount = 0
    tableCount = 1

    def count(self):
        pass

x=MyClass
print(x.tableCount)
print(x._MyClass__personCount)

5. 类的继承

  • 概念:面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是 通过继承机制。继承完全可以理解成类之间的类型和子类型关系。在程序中,继承描述的是事物之间的所属关系, 例如猫和狗都属于动物,程序中可以描述为猫和狗都继承自动物
class Animal:
    def __init__(self,name,sex):
        self.name = name
        self.sex = sex
    def eat(self):
        print('%s是一只%s,喜欢吃东西'%(self.name,self.sex))

class Dog(Animal):
    def __init__(self,name,sex):
        super().__init__(name,sex)

class Cat(Animal):
    def __init__(self,name,sex):
        super().__init__(name,sex)

dog1 = Dog('小黑','公狗')
dog1.eat()
cat1 = Cat('小白',"母猫")
cat1.eat()

猜你喜欢

转载自blog.csdn.net/qq_27171347/article/details/81033719
今日推荐