面向对象二

使用get和set方法保护对象属性

class Dog:

def set_age(self,new_age):

self.age=new_age

def get_age(self):

return self.age;

------------------------------------------私有方法----------------------------------

class Dog:

def __send_msg(self):

  print("该方法前面有__是私有方法只能在本类中调用,不能在外部调用")

def send_msg(self):

print("该方法前没有__是共有方法,可以在本类和外部调用")

---------------------------------------------__del__()方法--------------------------------------------

当类的对象被删除时会走del() 方法

class Dog:

def __del__(self):

print("删除")

 dog1= Dog();

dog2 = dog1

del dog1

del dog2

注释:

执行步骤是首先创建dog1对象引用指向Dog实体,dog2引用=dog1=Dog()实体,dog2指向Dog实体,然后del dog1 会走__del__(self)方法, 然后会走 del dog2方法 然后走 __del__(self):方法

-----------------------------------------获取引用计数--------------------------------------

引用计数就是一个实体对象被几个引用指向,

例如:

 d1=new Dog(),

d2=d1

d3=d1

那么Dog实体被三个引用指向,它的引用计数就是三

可以在终端通过以下方法获取引用计数

import sys

class T:

pass

t=T();

sys.getrefcount(t) #获取引用计数返回结果是2,在返回结果上减1就是该实体的实际引用计数

------------------------------------------继承---------------------------------------------------------

格式:

class 子类(父类):

子类只能继承父类公用的方法,不能继承私有方法

例如:

class Animal:

def eat(self)

print("--------吃----------")

def drink(self)

print("--------喝----------")

def sleep(self)

print("-------睡觉--------")

def run(self)

print("--------跑----------")

class Dog(Animal):

def run(self)

print("-----四条腿跑--------")

注释:以上Dog类继承Animal类

Dog里面的run方法表示重写父类run方法

在Python中允许有多继承

例如

class A:

calss B:

class C(A,B):

class C同时继承A和B,类C在调用ABC中都相同的方法时会先去走C里面再去走A 再去走B

-------------------------------------------------super()--------------------------------------

在子类中调用父类的方法可以用super().父类方法  来调用父类的方法

---------------------------------------------------多态---------------------------------------

class Dog:

def print_self(self):

print("Dog")

class Xiaotq(Dog):

def print_self(self):

print("xiaotq")

def introduce(temp)

temp.print_selt()

dog1 =Dog()

dog2 = Xiaotq()

introduce(dog1)

introduce(dog2)

注释:在类里面的叫方法,在类外面的叫函数,

注释:函数introduce()里面既可以传dog1也可以传dog2这就叫多态

--------------------------------------------------类对象/属性,实例对象/属性----------------------------------------------

#类对象

class Student:

#类属性

number=0

#类方法

@classmethod

def add_num(cls):

cls.number=100

#实例方法

def __init__(self,new_name):

#实例属性

self.name=new_name

#实例对象

s1 =Student("张三")

s2 =Student("李四")

注释:

实例属性:和具体的某个实例对象有关系,并且一个实例对象和另一个实例对象是不共享属性的,例如:s1的name张三 和 s2的name李四是不共享属性的

类属性:类属性所属于类对象,并且多个实例之间共享一个类属性,例如;s1的number和s2的number是共享属性的,都可以使用并且修改该属性

被@classmethod修饰的是类方法

类属性的调用:

s3 = Student("王五")

s3.add_num()或者Student.add_num():来调用类属性

常见的三种方法:

def __init__(self)#实例方法 必须穿参数self

@classmethod

def add_num(cls):#类方法必须有注解@classmethod 和传参数 cls

@staticmethod

def print_menu():#静态方法被类名.方法调用或者对象.方法调用,必须有注解@staticmethod ,不用传参数



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值