python--类和对象

类 : 具有相同的属性和方法的对象的集合 .它定义了该集合中每个对象所共有的属性和方法。

对象: 万物皆对象.

类和对象的关系 : 类是对象的模板; 对象是类的实例.

语法:

  class   类名:    里面包含    属性   和   方法

class Preson:      #     Preson  是类名  可以随意定义
    def eat(self):
        # " def "为定义方法
        # " eat "函数名-->方法名  可以随意定义
        # " (   ) "形参列表  形参: 形式列表
        # " self "  第一个参数  默认是当前对象的引用 = 地址指向  可以随意修改
        print('人在吃饭...')
    def sleep(self):
        print('睡觉就行时...')
if '__main__'.__eq__(__name__):      #代表程序主入口  是从这里进去的(不写也可以)
    zhangshan=Preson()   #创建对象(直接用这个)
    zhangshan.eat()    #调用对象
    zhangshan.sleep()   #调用对象
 #打印结果为:  人在吃饭...
 #             睡觉就行时...

很多类都倾向于将对象创建为有初始状态的。

      因此类可能会定义一个名为   __init__( )   特殊方法(构造

方法) 

 先生成对象,调用此方法,再将对象赋值给引用名

#    __init__() 无参   的方法
class Preson:
    def __init__(self):
        self.name='无名氏'    #这的进行赋值   可生成多个
    def eat(self):
        print(self.name+'人在吃饭...')
    def sleep(self):
        print(self.name+'睡觉就行时...')
Pre=Preson()     #必需先实例化类   然后进行调用
Pre.eat()
Pre.sleep()
#打印为: 无名氏人在吃饭...
#        无名氏睡觉就行时...
Pre=Preson()  
Pre.name='张珊'   #也可以在和进行赋值  如果同时赋值  这里具有优先权 执行这
Pre.eat()
Pre.sleep()
# 打印为:    张珊人在吃饭...
#            张珊睡觉就行时...

建议使用下面这种方法(只是建议,因人而异,不强制)

#    __init__() 有参   的方法
class Preson:
    def __init__(self,name,age):
        # self.name 创建一个属性叫name 并且把形参name 赋值给了name
        self.name=name
        self.age=age
    def eat(self):
        print(self.name+'人在吃饭...')
    def Hello(self):
        print('大家好,我叫'+self.name,'今年',self.age,'岁')
Pre=Preson('张三',18)    #直接在这进行赋值
Pre.eat()
Pre.Hello()
#打印为   张三人在吃饭...
#         大家好,我叫张三 今年 18 岁

重写的方法:  __str__()

class Preson:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def eat(self):
        print(self.name+'人在吃饭...')
    def Hello(self):
        print('大家好,我叫'+self.name,'今年',self.age,'岁')
    def __str__(self):    #如果在输入这行代码 返回的就 不在是 地址和引用
        # object  所有数据类型的基类  父类
        return 'name:' + self.name + 'age :' + str(self.age)    #返回的是这个
Pre=Preson('张三',18)   
#  如果不输入所述 代码  则打印   地址和对象的引用
print(Pre)
print(str(Pre))
print(Pre.__str__())
#打印都为  <__main__.Preson object at 0x054D0750>
#  如输入上面所述代码   返回的皆是 name:张三age :18

解释型语言,不需要预定义,在使用前直接声明就可以(随时创建,随时使用):

class Preson:
    def eat(self):
        print(self.name+'人在吃饭...')
    def Hello(self):
        print('大家好,我叫'+self.name,'今年',self.age,'岁')
Pre = Preson()
Pre.name='李四'    #注意代码是从头开始执行 所以需要写前面
Pre.age=19
Pre.eat()
Pre.Hello()
#打印为:   李四人在吃饭...
#          大家好,我叫李四 今年 19 岁

python的语法特点,没有绝对,一切靠自觉,见名知意

公有方法 :允许外部调用的方法

私有方法  : 不允许外部调用的方法  只能在当前类中使用 ,以__开头__结尾    想调也可以调到

自动销毁方法: __del__( )   

       当对象没有引用的时候,或程序结束的时候,程序自动调用__del__().

class Preson:
    def eat(self):
        print(self.name+'人在吃饭...')
    def Hello(self):
        print('大家好,我叫'+self.name,'今年',self.age,'岁')
    def __del__(self):   #这是一种办法  在这输入代码
        print('对象被删除...')
Pre = Preson()
Pre.name='李四'
Pre.age=19
Pre.eat()
Pre.Hello()
del Pre  #也可以直接在末尾写
#最后打印出来   李四人在吃饭...
#              大家好,我叫李四 今年 19 岁
#              对象被删除...

可以测试一个对象有多少个引用: 在顶部写import sys     末尾写sys.getrefcount(    )    返回 从 2 开始

import sys   #在顶部写import 后面接 sys
class Preson:
    def eat(self):
        print(self.name+'人在吃饭...')
    def Hello(self):
        print('大家好,我叫'+self.name,'今年',self.age,'岁')
Pre = Preson()
Pre.name='李四'
Pre.age=19
Pre.eat()
Pre.Hello()
lisi=Pre
print(sys.getrefcount(Pre))     #打印为3   要是没有引用则默认是2

python:命名规则:

变量命名:数字 、字母  "   _  "(下划线)

注  :首字母不能是数字

非硬性要求:(规范)   建议

1.习惯性:    下划线加    _name 

2.驼峰式写法 :    例:  MyClass

3.第一个单词首字母小写其余的单词首字母大写

不要去用关键字









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值