类的各种自带方法,静态方法,属性方法,类方法等

#coding=utf-8

class Dog(object):
    ‘‘‘
    类的描述
    ‘‘‘

    def __init__(self,name):
        self.name = name
        self.__food = None

    @staticmethod     #实际上跟类没什么关系,单纯的函数,但是必须通过类名来调用
    def eat(food):
        print (‘%s is eating %s‘%(‘xiaohuang‘,food))

    @classmethod       #类方法,只能访问类变量,不能访问实例变量
    def talk(cls):
        print (‘is talking‘)

    @property
    def age(self):      #属性方法:把一个方法变成一个静态属性,不能直接赋值,无法直接删除,无法直接附值
        print self.__food

    @age.setter
    def age(self,food):
        print (‘%s is  age %s‘%(self.name,food))    #改变属性方法的值
        self.__food = food
    @age.deleter
    def age(self):
        del self.__food

    def __call__(self):   #对象的再次调用 obj()
        print ‘123‘

    def __str__(self):   #打印对象的时候不会返回内存地址,会返回该方法的返回值
        return ‘12434‘
    def __new__(cls,*args,**kwargs):
        print ‘5654765‘
        return object.__new__(cls)

d = Dog(‘xianghuang‘)
d.eat(‘mianbao‘)
d.age   #属性方法调用
d.age = ‘huangyou‘ #属性方法附值
d.age
del d.age    #属性方法删除
#print d.age
print Dog.__doc__#返回类的描述
print d.__module__ #返回实例创建的地方
print d.__class__ #返回类名
print Dog.__dict__ #打印类里面的所有属性,不包括实例属性
print d.__dict__#打印所有实例属性,不包括类属性
c = Dog(‘xiangbai‘)
print c

#把一个字典封装成实例
# d.__getitem__
# d.__setitem__
# d.__delitem__

#__new__   在实例化时候会执行,而且在init前执行,用来创建实例的
#类的另一种创建方式
def func(self):
    print ‘hello word‘
Foo = type(‘Foo‘,(),{‘talk‘:func})

print type(type(type(‘123‘)))

#__metaclass__  #表示这个类是由谁来创建的
class Mytype(type):
    def __init__(self,what,bases=None,dict=None):  #第一步
        super(Mytype,self).__init__(what,bases,dict)

    def __call__(self,*args,**kwargs):                    #第二步
        obj = self.__new__(self,*args,**kwargs)         #第二步
        self.__init__(obj)

class Foo(object):
    __metaclass__ = Mytype

    def __init__(self,name):   #第四步
        self.name = name

    def __new__(cls,*args,**kwargs):
        return object.__new__(cls,*args,**kwargs)   #第三步

obj = Foo()

原文地址:https://www.cnblogs.com/qiangayz/p/8587014.html

时间: 2024-10-16 04:28:48

类的各种自带方法,静态方法,属性方法,类方法等的相关文章

创建运行时类的对象,调用指定的属性方法构造器

1 使用newInstance(),实际上是调用运行时空参的构造器    注意构造器的权限修饰符要足够,同时必须有一个空参的构造器. 2 调用指定的属性方法构造器 package lianxi1; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Meth

13 PHP 对象基础 属性 方法 静态属性方法 this self 构造方法 学习 析构方法

面向对象思想介绍 OOP:Object Oriented Program面向对象编程. 传统的面向过程 将要完成的工作,分作若干个步骤,或再细分为子步骤,然后后步骤从前往后一步一步完成,最初达致目标. 现代的面向对象 将要完成的工作拆分为"一个一个对象"的任务(功能),每个对象独自完成自己的任务,任务之间的链接通过"调用"来实现,最终也完成了整体的工作. 万事万物都是对象. 面向对象是设计思想的"升华"--面向过程是解决简单问题的自然的思维过程,

Python之路 - 属性方法,类方法,静态方法

本章内容 属性方法 类方法 静态方法 属性方法 属性方法就是通过使用装饰器 @property , 将一个方法变成一个静态属性 , 于是我们就可以通过访问属性 , 来或得一个方法的返回值 1 from urllib.request import urlopen 2 class Web_page: 3 def __init__(self, url): 4 self.url = url 5 self.__content = None 6 # 将content方法变成属性 7 @property 8

面向对象【day08】:静态方法、类方法、属性方法

本节内容 概述 静态方法 类方法 属性方法 总结 一.概述 前面我们已经讲解了关于类的很多东西,今天讲讲类的另外的特性:静态方法(staticmethod).类方法(classmethod).属性方法(property) 二.静态方法 2.1 定义 说明:在方法名前加上@staticmethod装饰器,表示此方法为静态方法 1 2 3 4 5 6 7 8 class Dog(object):     def __init__(self,name):         self.name = nam

Python面向对象静态方法,类方法,属性方法

静态方法(staticmethod名义上归类管理,实际上在静态方法里访问不到类或实例中的静态属性) 1 class days(object): 2 def __init__(self, food): 3 self.food = food 4 5 @staticmethod # 实际和类没有关系 6 def tell(self): 7 print('这里有%s,%s快来' % (self.food, 'name')) 8 9 10 a = days('香蕉') 11 a.tell(a) 类方法(c

Python的程序结构(2) -> 方法/Method -> 静态方法、类方法和属性方法

静态方法.类方法和属性方法 在 Python 中有三种常用的方法装饰器(参考装饰器部分内容),可以使普通的类实例方法变成带有特殊功能的方法,分别是静态方法.类方法和属性方法. 静态方法 / Static Method 在 def 定义之前加上 @staticmethod 进行装饰,便可以使该方法成为静态方法,静态方法无法调用实例属性.静态方法可以通过实例或类进行调用.通常用于无需生成实例或无需共享实例属性的方法中,比如一些纯粹的数学公式计算等场合. 1 class Foo(): 2 @stati

类的三种方法(静态方法,类方法,属性方法)

1.(静态方法) class Dog(object):      def __init__(self, name):         self.name = name       @staticmethod      def name(obj):          print('%s is name'%obj) Dog.name('ronghua') @staticmethod静态方法与类本身不存在关系,只是调用的时候需要加类名,不可对类中的其他变量进行操作 2.(类方法) class Dog(

Python面向对象 --- 新旧式类、私有方法、类属性和类方法、静态方法

一.Python面向对象中的新旧式类 1)新式类(推荐使用):在定义类时,类后边括号里要继承基类(object).在python3.x中若没有指定父类,会默认使用的是object作为基类:在python2.x中,若没指定父类,则不会以object作为基类. 2)旧式类(经典类):在定义类时,类后边括号中不用继承object类,甚至不用括号. 3)dir方法是用来查看类的内置方法. 二.私有方法和属性 1)私有属性是对象不希望公开的属性:私有方法是对象不希望公开的方法.在定义私有属性和方法时,在属

Python高级语法-对象实例对象属性-类与实例,class方法静态方法等(4.6.1)

目录 1.说明 2.代码 关于作者 @ 1.说明 python中属性:类属性,实例属性 方法:类方法,实例方法,静态方法 想修改类属性,只能是类方法,因为只有类方法把cls(类)传入数据里面 静态方法也就是个普通的方法,为了方便而已 实例方法,不能通过类来直接调用,要调用也可以self = 对象名 具体下面 2.代码 class Provice(object): #类属性 country = "china" def __init__(self,name): #实例属性 self.nam