面向对象 成员

-------------最惨的破产就是丧失自己的热情。
# ---------------------------------------------------------------------------------#
day 016
'''
本节主要内容:
1. 类的成员
2. 类的成员-变量
3. 类的成员-方法
4. 类的成员-属性

'''


# 实例方法针对的是实例,
# 类方法针对的是类,
# 他们都可以继承和重新定义,而静态方法则不能继承,可以认为是全局函数。

#
# class People:
# dream = 'learn_python'
# def __init__(self,name,age,borg):
# self.name =name
# self.age = age
# self.borg = borg
#
# kk = People("卡卡",18,"boy")
# kk.dream = "learn_java"
# print(kk.name)
# print(kk.borg)
# print(kk.dream)
#
# JJ = People("静静",25,"girl")
# print(JJ.name)
# print(JJ.borg)
# print(JJ.dream)


# class Huiji:
#
# def swimming(self):
# print("My 灰机 会 swimming")
#
# def playball(self):
# print("My 灰机 会 playball")
#
# QQ = Huiji()
#
# QQ.swimming()
# QQ.playball()


# class Pig:
# def fly(self):
# print("MY de pig can 飞")
#
# @classmethod
# def flyandjianshen(cls):
# print("MY de ping can jianshen")
#
#
#
# print(Pig)
# Pig.fly()
#
# iG =Pig
# iG.fly()
# iG.flyandjianshen()


# class shengxiao:
# def __init__(self, price, weight,danjia):
# self.price = price
# self.weight = weight
# self.danjia = danjia
#
# @property
# def getzongjia(self):
# return self.danjia * self.weight
#
# chouniu = shengxiao("cn",'3500','300','55')
# print(chouniu.getzongjia)


# ---------------------------------------------------------------------------------
# 1. 简述面向对象三大特性并用示例解释说明?【背写】
# 封装 : 对属性和方法的封装,以便随时调用
# eg:
# 继承 : 子类除了本身以外还可以使用父类的方法和
# eg:
# 多态 : 鸭子模型,同一个对象拥有多种形态
# eg:
# ---------------------------------------------------------------------------------#
# 2. 面向中的变量分为哪几种?并用示例说明区别?【背写】
# 1. 实例变量 .说白了,就是每个实例变量都应该拥有的变量.比如,人的名字,人的爱好
# ,每个人的个人信息都属于实例变量..给对象用的 .

# 2. 类变量(静态变量) 直接写在类中的变量就是类变量,需要用类名来访问,可以改变.
# ,多个对象共享的.

# ---------------------------------------------------------------------------------#
# 3. 面向对象中方法有哪几种?并用示例说明区别?【背写】
# 1. 类方法 类名.方法 调用
# 2. 实例方法 对象.方法 调用
# 3. 静态方法 类名.方法 调用
# ---------------------------------------------------------------------------------#
# 4. 面向对象中的属性有什么?并用示例说明?
# 1. 第一种 是 把 方法 转换成属性
# 2. 对象.属性
# ---------------------------------------------------------------------------------#
# 5. 简述静态方法和类方法的区别?
# 静态方法 : 不用传递参数,没有继承
# 类方法 : 需要传递参数,可以继承; 访问类方法,默认传递的是类

# ---------------------------------------------------------------------------------#
# 6. 面向对象的方法中那个无需传参数?
# 静态方法

# ---------------------------------------------------------------------------------#
# 7. 面向对象中公有和私有成员,在编写和调用有哪些不同?
# 一个使用 __xx__ 两端使用__
# 私有使用 __xx 左端使用
# ---------------------------------------------------------------------------------#
# 8. 看代码写结果:【禁止运行】
# class Foo:
# a1 = 11
# a2 = 12
#
# def __init__(self):
# self.a1 = 1
#
#
# obj = Foo()
# print(obj.a1)
# print(obj.a2)


# --> 1 / 12


# ---------------------------------------------------------------------------------#
# 9. 看代码写每个打印结果:【禁止运行,如果报错可认为程序会继续向后执⾏】
# class Foo(object):
# a1 = 11
#
# def __init__(self, num):
# self.a2 = num
#
# obj = Foo(999)
# print(obj.a2) # 999
# print(obj.a1) # 11
#
# print(Foo.a1) # 11
# print(Foo.a2) # Error

# ---------------------------------------------------------------------------------#
# 10. 看代码写每⼀一个打印结果:【禁⽌止运⾏行行,如果报错可认为程序会继续向后执⾏行行】
# class Foo(object):
# a1 = 1
# __a2 =2
# def __init__(self,num):
# self.num = num
# self.__salary =1000
#
# def get_data(self):
# print(self.num+self.a1)
#
# obj = Foo(666)
#
# print(obj.num) #666
# print(obj.a1) #1
# print(obj.__salary) # 私有不可访问
# print(obj.__a2) # 私有不可访问
# print(Foo.a1) # 1
# print(Foo.__a2) # 私有不可访问

# ---------------------------------------------------------------------------------#
# 11. 看代码写每⼀一个打印结果:【禁⽌止运⾏行行,如果报错可认为程序会继续向后执⾏行行】行】
# class Foo(object):
# a1 = 1
# __a2 = 2
#
# def __init__(self, num):
# self.num = num
# self.__salary = 1000
#
# def get_data(self):
# print(self.num + self.a1)
#
# obj1 = Foo(666)
# obj2 = Foo(999)
# print(obj1.num) # 666
# print(obj2.a1) # 1
#
# obj1.num = 18
# obj1.a1 = 99
#
# print(obj1.num) #18
# print(obj1.a1) #99
#
# print(obj2.a1) # 1
# print(obj2.num+Foo.a1) # 1000
# print(obj2.num+obj1.a1) # 999+99-->1098

# ---------------------------------------------------------------------------------#
# 12. 看代码写每⼀一个打印结果:【禁⽌止运⾏行行,如果报错可认为程序会继续向后执⾏行行】行】
# class Foo(object):
# hobby = "大保健"
#
# def __init__(self,num):
# self.num = num
# self.__salary =1000
#
# def f1(self):
# print(Foo.hobby)
#
# @staticmethod
# def f2():
# print(Foo.hobby)
#
# @classmethod
# def f3(cls):
# print(cls.hobby)

# 请将以上方法补全并调用执行.
#需求: f1,实例方法 f2,静态方法 f3,类方法
# ---------------------------------------------------------------------------------#
#13.看代码写结果:[禁止运行,如果报错可认为程序会继续向后执行]
# class Foo(object):
#
# @classmethod
# def f3(cls):
# print(cls)
#
# Foo.f3()
#--> <class '__main__.Foo'>

# ---------------------------------------------------------------------------------#
# 14. 看代码写结果:【禁⽌yun行,如果报错可认为程序会继续向后执行】
# class Foo(object):
#
# @classmethod
# def f3(cls):
# print(cls)
#
# obj = Foo
# obj.f3()
#--> <class '__main__.Foo'>

# ---------------------------------------------------------------------------------#
# 15. 看代码写结果:【禁⽌运行,如果报错可认为程序会继续向后执行】
# class Foo(object):
#
# @classmethod
# def f3(cls):
# print(cls)
#
# def f2(self):
# self.f3()
# Foo.f3()
#
# obj = Foo()
# obj.f2()
#--> <class '__main__.Foo'> --> <class '__main__.Foo'>

# ---------------------------------------------------------------------------------#
# 16 看代码写结果:【禁⽌运行,如果报错可认为程序会继续向后执行】
# class Base(object):
#
# @classmethod
# def f3(cls):
# print(cls)
#
# def f1(self):
# print('base.f1')
# self.f3()
#
# class Foo(Base):
#
# def f2(self):
# print('foo.f2')
# self.f1()
#
# obj = Foo()
# obj.f2()

#--> foo.f2 -->base.f1 --> <class '__main__.Foo'>

# ---------------------------------------------------------------------------------#
# 17. 请编在写一个私有的静态⽅方法,并通过代码证明私有方法不能再外部方法但可以在内部访问。

# class Animal:
# def __init__(self,name,age):
# self.name = name
# self.age = age
#
# def gun(self,c,d):
# print(c,d)
#
# def __eat(self,a,b):
# print(a,b)
#
# panda =Animal("胖达",'18')
# panda.name()
# panda.age()
# panda.gun(8,9)
# panda.__eat(7,6) #--> 不可访问

# ---------------------------------------------------------------------------------#
# 18. 现有500W条数据.请使用面向对象的思维来完成这500W条数据的分页工作(升级题)
class Page:
def __init__(self,lst,pagesize):
self.lst =lst
self.pagesize = pagesize

def start(self,a):
return a

def end(self,b): #[返回最后一页]
return b
def index(self,x): #[返回指定页面]
return x

ye = input("输入要查询的数据的页码-->")

# ---------------------------------------------------------------------------------#
# 19. 在昨天最后一题的基础上.把数据写入到文件中.并且注册的时候需要到文件中判断是否重
# 复.如果重复提示不能注册.(升级题)





'''
本节主要内容:
1. 类的成员
2. 类的成员-变量
3. 类的成员-方法
4. 类的成员-属性

'''


# 实例方法针对的是实例,
# 类方法针对的是类,
# 他们都可以继承和重新定义,而静态方法则不能继承,可以认为是全局函数。

#
# class People:
# dream = 'learn_python'
# def __init__(self,name,age,borg):
# self.name =name
# self.age = age
# self.borg = borg
#
# kk = People("卡卡",18,"boy")
# kk.dream = "learn_java"
# print(kk.name)
# print(kk.borg)
# print(kk.dream)
#
# JJ = People("静静",25,"girl")
# print(JJ.name)
# print(JJ.borg)
# print(JJ.dream)


# class Huiji:
#
# def swimming(self):
# print("My 灰机 会 swimming")
#
# def playball(self):
# print("My 灰机 会 playball")
#
# QQ = Huiji()
#
# QQ.swimming()
# QQ.playball()


# class Pig:
# def fly(self):
# print("MY de pig can 飞")
#
# @classmethod
# def flyandjianshen(cls):
# print("MY de ping can jianshen")
#
#
#
# print(Pig)
# Pig.fly()
#
# iG =Pig
# iG.fly()
# iG.flyandjianshen()


# class shengxiao:
# def __init__(self, price, weight,danjia):
# self.price = price
# self.weight = weight
# self.danjia = danjia
#
# @property
# def getzongjia(self):
# return self.danjia * self.weight
#
# chouniu = shengxiao("cn",'3500','300','55')
# print(chouniu.getzongjia)


# ---------------------------------------------------------------------------------
# 1. 简述面向对象三大特性并用示例解释说明?【背写】
# 封装 : 对属性和方法的封装,以便随时调用
# eg:
# 继承 : 子类除了本身以外还可以使用父类的方法和
# eg:
# 多态 : 鸭子模型,同一个对象拥有多种形态
# eg:
# ---------------------------------------------------------------------------------#
# 2. 面向中的变量分为哪几种?并用示例说明区别?【背写】
# 1. 实例变量 .说白了,就是每个实例变量都应该拥有的变量.比如,人的名字,人的爱好
# ,每个人的个人信息都属于实例变量..给对象用的 .

# 2. 类变量(静态变量) 直接写在类中的变量就是类变量,需要用类名来访问,可以改变.
# ,多个对象共享的.

# ---------------------------------------------------------------------------------#
# 3. 面向对象中方法有哪几种?并用示例说明区别?【背写】
# 1. 类方法 类名.方法 调用
# 2. 实例方法 对象.方法 调用
# 3. 静态方法 类名.方法 调用
# ---------------------------------------------------------------------------------#
# 4. 面向对象中的属性有什么?并用示例说明?
# 1. 第一种 是 把 方法 转换成属性
# 2. 对象.属性
# ---------------------------------------------------------------------------------#
# 5. 简述静态方法和类方法的区别?
# 静态方法 : 不用传递参数,没有继承
# 类方法 : 需要传递参数,可以继承; 访问类方法,默认传递的是类

# ---------------------------------------------------------------------------------#
# 6. 面向对象的方法中那个无需传参数?
# 静态方法

# ---------------------------------------------------------------------------------#
# 7. 面向对象中公有和私有成员,在编写和调用有哪些不同?
# 一个使用 __xx__ 两端使用__
# 私有使用 __xx 左端使用
# ---------------------------------------------------------------------------------#
# 8. 看代码写结果:【禁止运行】
# class Foo:
# a1 = 11
# a2 = 12
#
# def __init__(self):
# self.a1 = 1
#
#
# obj = Foo()
# print(obj.a1)
# print(obj.a2)


# --> 1 / 12


# ---------------------------------------------------------------------------------#
# 9. 看代码写每个打印结果:【禁止运行,如果报错可认为程序会继续向后执⾏】
# class Foo(object):
# a1 = 11
#
# def __init__(self, num):
# self.a2 = num
#
# obj = Foo(999)
# print(obj.a2) # 999
# print(obj.a1) # 11
#
# print(Foo.a1) # 11
# print(Foo.a2) # Error

# ---------------------------------------------------------------------------------#
# 10. 看代码写每⼀一个打印结果:【禁⽌止运⾏行行,如果报错可认为程序会继续向后执⾏行行】
# class Foo(object):
# a1 = 1
# __a2 =2
# def __init__(self,num):
# self.num = num
# self.__salary =1000
#
# def get_data(self):
# print(self.num+self.a1)
#
# obj = Foo(666)
#
# print(obj.num) #666
# print(obj.a1) #1
# print(obj.__salary) # 私有不可访问
# print(obj.__a2) # 私有不可访问
# print(Foo.a1) # 1
# print(Foo.__a2) # 私有不可访问

# ---------------------------------------------------------------------------------#
# 11. 看代码写每⼀一个打印结果:【禁⽌止运⾏行行,如果报错可认为程序会继续向后执⾏行行】行】
# class Foo(object):
# a1 = 1
# __a2 = 2
#
# def __init__(self, num):
# self.num = num
# self.__salary = 1000
#
# def get_data(self):
# print(self.num + self.a1)
#
# obj1 = Foo(666)
# obj2 = Foo(999)
# print(obj1.num) # 666
# print(obj2.a1) # 1
#
# obj1.num = 18
# obj1.a1 = 99
#
# print(obj1.num) #18
# print(obj1.a1) #99
#
# print(obj2.a1) # 1
# print(obj2.num+Foo.a1) # 1000
# print(obj2.num+obj1.a1) # 999+99-->1098

# ---------------------------------------------------------------------------------#
# 12. 看代码写每⼀一个打印结果:【禁⽌止运⾏行行,如果报错可认为程序会继续向后执⾏行行】行】
# class Foo(object):
# hobby = "大保健"
#
# def __init__(self,num):
# self.num = num
# self.__salary =1000
#
# def f1(self):
# print(Foo.hobby)
#
# @staticmethod
# def f2():
# print(Foo.hobby)
#
# @classmethod
# def f3(cls):
# print(cls.hobby)

# 请将以上方法补全并调用执行.
#需求: f1,实例方法 f2,静态方法 f3,类方法
# ---------------------------------------------------------------------------------#
#13.看代码写结果:[禁止运行,如果报错可认为程序会继续向后执行]
# class Foo(object):
#
# @classmethod
# def f3(cls):
# print(cls)
#
# Foo.f3()
#--> <class '__main__.Foo'>

# ---------------------------------------------------------------------------------#
# 14. 看代码写结果:【禁⽌yun行,如果报错可认为程序会继续向后执行】
# class Foo(object):
#
# @classmethod
# def f3(cls):
# print(cls)
#
# obj = Foo
# obj.f3()
#--> <class '__main__.Foo'>

# ---------------------------------------------------------------------------------#
# 15. 看代码写结果:【禁⽌运行,如果报错可认为程序会继续向后执行】
# class Foo(object):
#
# @classmethod
# def f3(cls):
# print(cls)
#
# def f2(self):
# self.f3()
# Foo.f3()
#
# obj = Foo()
# obj.f2()
#--> <class '__main__.Foo'> --> <class '__main__.Foo'>

# ---------------------------------------------------------------------------------#
# 16 看代码写结果:【禁⽌运行,如果报错可认为程序会继续向后执行】
# class Base(object):
#
# @classmethod
# def f3(cls):
# print(cls)
#
# def f1(self):
# print('base.f1')
# self.f3()
#
# class Foo(Base):
#
# def f2(self):
# print('foo.f2')
# self.f1()
#
# obj = Foo()
# obj.f2()

#--> foo.f2 -->base.f1 --> <class '__main__.Foo'>

# ---------------------------------------------------------------------------------#
# 17. 请编在写一个私有的静态⽅方法,并通过代码证明私有方法不能再外部方法但可以在内部访问。

# class Animal:
# def __init__(self,name,age):
# self.name = name
# self.age = age
#
# def gun(self,c,d):
# print(c,d)
#
# def __eat(self,a,b):
# print(a,b)
#
# panda =Animal("胖达",'18')
# panda.name()
# panda.age()
# panda.gun(8,9)
# panda.__eat(7,6) #--> 不可访问

# ---------------------------------------------------------------------------------#
# 18. 现有500W条数据.请使用面向对象的思维来完成这500W条数据的分页工作(升级题)
class Page:
def __init__(self,lst,pagesize):
self.lst =lst
self.pagesize = pagesize

def start(self,a):
return a

def end(self,b): #[返回最后一页]
return b
def index(self,x): #[返回指定页面]
return x

ye = input("输入要查询的数据的页码-->")

# ---------------------------------------------------------------------------------#
# 19. 在昨天最后一题的基础上.把数据写入到文件中.并且注册的时候需要到文件中判断是否重
# 复.如果重复提示不能注册.(升级题)











































原文地址:https://www.cnblogs.com/dealdwong2018/p/9926526.html