美文网首页
python里的面向对象

python里的面向对象

作者: 可乐_d001 | 来源:发表于2017-10-27 21:44 被阅读0次

class Student:
//count = 0 // count变量是一个类变量,它的值将在这个类的所有实例之间共享。你可以在内部类或外部类使用Student.count访问。

//init()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法
def __init __(self,name,age):
self.name = name
self.age = age
Student.count =Student.count + 1
//在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数,叫做实例方法:
def one(self):
print('name:',self.name,'age:',self.age)
print('Zount:',Student.count) //如果在这打印的话,得到的就是0,因为还没有给传参
//下边俩是创建实例对象
st1 = Student('大傻',12)
st2 = Student('二傻',23)
//使用点(.)来访问对象的属性。
st1.one() //name ;大傻,age:12
st2.one() //name ;大傻,age:12
//使用类的名称访问类变量:
print('Zount:',Student.count) //这个打印出来就是2 ,这个Student.count是在st1,st2,传了参数以后就会触发的,

//可以添加,删除,修改类的属性:
st1.name = ‘是是是’ //修改
st1.grade = 343 // 增加
del st1.age //删除age属性
//判断st1中有没有age,有就返回true
bol = hasattr(st1, 'age')
print(bol)

//我们来解释一下实例变量
实例变量(实例属性,对象属性,属性)
def init(self,name,age): # 实例变量要定义在这个函数里,该函数接收的第一个参数是

指针类型

self指针永远指向该类创建出的某个对象 不会随着对象的变化而更改

init函数在调用类创建对象过程中会自行调用执行,不需要手动调用此函数

//我们来说一下定义类方法@classmethod
class Student:
country = 'china'
def init(self):
self.country = 'Ameian'
@classmethod (#装饰器 待我确定到底有啥用)
//通过系统装饰器classmothod声明函数为类方法,类方法中的self指针指向的是类本身
也就意味着类方法只能访问类变量,或类属性,不能访问实例变量,就是不走那个init方法
def say(self):
print('我的国家是:'+self.country)
stu = Student()
stu.say() //我的国家是:china
Student.say() //我的国家是:china

特性:property 属性中的一种

class Student:
def init(self,name):
self._name = name
def hello(self):
return self._name+'hrllp'
st = Student('zhangsan')
print(st._name) san1//zhang
st.hello = 'coiad'
print(st.hello) //coiad
//如果这个时候
class Student:
def init(self,name):
self._name = name
@property
def hello(self):
return self._name+'hrllp'
st = Student('zhangsan')
print(st._name) //zhang
st.hello = 'coiad'
print(st.hello) //就会报错,因为不让修改
//也就是,如果调用特性,则用户只能访问不能设置

  //接下来就解释一下,怎么修改
  //设置器:专门给特性使用,用来修改特性的值
    @姓名.setter

class Student:
def init(self,name):
self._name = name
@property
def hello(self):
return self._name
@hello.setter
def hello(self,num): //这里的num是要改成什么值
if type(num) is int:
self._num = num;
else:
print(‘请输入正值’)
删除器:通过del删除某个特性时,如果定义了删除器,则该操作会执行删除中的代码
@name.deleter
def name(self):
print('不能删')
st = Student('zhangsan')
print(st._name)
stu.name = 122
print(stu.name) //就把特性的值给改了
del stu.name //打印出来不能删

py中的私有化机制:属性名改写,在所有需要私有化的属性前添加俩下划线,则该属性名会变成:类名_属性名
class Student:
def init(self):
self.name = 'sdsdd'
def __say(self):
print(''hello,'+self.name')
stu = Student()
stu._Student__say()

//继承
class A:
def init(self):
self.name = 'zhang'
def say(self):
print('我是父类')
class B(A): # 声明继承关系,在子类名后跟小括号,小括号里是要继承的父类名
# 继承的语法
# 继承关系中init方发的执行逻辑:
# 在子类没有实现inIT方法时,会触发父类中的init执行
# 如果子类实现了init,则只触发子类的init,不会触发父类的
def init(self):
# 手动调用父类的init函数
A.init(self)
print('我是子类的')

def Bsay(self):
    print('我是子类')
# 在子类中腹泻父类中的方法
def say(self):
    A.say(self)
    print('我是腹泻的子女数据')

a = A()

b = B()
b.say()
print(b.name)
//我是子类的
//我是父类
//我是腹泻的子女数据
//zhang

# type() 获取到对象的数据类型(内置数据类型)

print(type(12.34) is int)
class A:
pass
class B(A):
pass
a = A()
print(type(a) is A)

isinstance 用来判断对象和类之间的关系,一般是自定义对象

bol = isinstance(a,A)
print(bol)

issubclass 判断B是否继承自A

bol = issubclass(B,A)
print(bol)

相关文章

  • python面向对象学习笔记-01

    学习笔记 # 0,OOP-Python面向对象 - Python的面向对象 - 面向对象编程 - 基础 -...

  • Python 面向对象编程

    Python 面向对象编程(一) Python 面向对象编程(一) 虽然Python是解释性语言,但是它是面向对象...

  • python基础-02

    Python 面向对象 python是一门面向对象的语言 Python内置类属性 python对象销毁(垃圾回收)...

  • 王艳华Pythonday03

    Python的面向对象 Java 面向对象 继承

  • python里的面向对象

    class Student://count = 0 // count变量是一个类变量,它的值将在这个类的所有实...

  • Python OOP-1

    0. OOP-Python面向对象 Python面向对象 面向对象编程基础公有私有继承组合,Mixin 魔法函数魔...

  • Python进阶1

    Python中一切皆对象 引言 Java语言也是面向对象的语言,但是Python要更加彻底 Python的面向对象...

  • 2019-10-23

    python面向对象编程总结 python中的对象:在其...

  • 营销比赛二三事

    Python面向对象编程三大特性调研 Python面向对象之封装 在Python中,没有类似 private 之类...

  • Python精简入门学习(十四)

    Python精简入门学习之面向对象(oop) -面向对象 -类和对象

网友评论

      本文标题:python里的面向对象

      本文链接:https://www.haomeiwen.com/subject/xrydpxtx.html