面向对象中:变量,方法,属性相关知识及示例

变量:


实例变量(字段):    class Foo:        def __init__(self,name,age):            self.__name = name   #私有实例变量,只能内部调用,外部不能调用,子类不能调用            self.age = age     #公有实例变量,都可以调用

def func(self):            pass类变量(静态字段):    class Foo:        __race = ‘人类‘    #私有静态字段,只能内部调用,外部不能调用,子类不能调用        country = ‘中国‘   #公有静态字段

def __init__(self):            pass

方法:
实例方法:    class Foo:        def __init__(self,name):            self.name = name

def func(self):   #使用对象封装的变量,至少有一个参数self            print(self.name)    obj = Foo(‘小明‘)    obj.func()

静态方法:    class Foo:        def __init__(self,name):            self.name = name

@staticmethod        def func():   #不使用对象封装的变量,左上写@staticmethod,可以没有参数self,也可以有多个参数,尽量使用类名.方法名()调用            print(‘哈哈哈)

obj = Foo(‘小明‘)    Foo.func()

类方法:    class Foo:        def __init__(self,name):            self.name = name

@classmethod        def func(cls):  #方法上方写@classmethod,至少有一个参数cls,在调用的时候cls会自动传入当前类,尽量使用类名.方法名()调用            print(666)

obj = Foo(‘xiaoming‘)    Foo.func()

静态方法跟类方法的区别:  静态方法:      方法上方写@staticmethod      方法参数可有可无      无需调用对象中已经封装的值的时候,可以使用静态方法  类方法:      方法上方写@classmethod      至少有一个参数 cls,也可以有多个参数,cls会默认传值,传进去的是当前类      如果在方法中会使用到当前类,那么就可以使用类方法

属性:
class Foo:    def __init__(self,name):        pass

@property    def func(self):  #方法上方写@property,方法参数只有一个self,无需加(),直接对象.方法就可以了        return 10  #对于简单的方法,当无需传参,且有返回值的时候,可以使用@property

obj.Foo()print(obj.func)

 

 

原文地址:https://www.cnblogs.com/lianghui-lianghui/p/9555096.html

时间: 2024-11-05 12:24:35

面向对象中:变量,方法,属性相关知识及示例的相关文章

C#语言中字段和属性相关知识剖析

针对C#中的字段和属性,很多初学者无法区分这两者之间的区别. 字段与属性比较 字段;是一种"成员变量",一般在类的内部做数据交互使用,占用内存空间. 属性:a.是一种逻辑变量,一般跟字段一起结合起来使用,是字段的扩展,并不占用实际的内存. b.属性其实就是外界访问私有字段的入口,属性本身不保存任何数据.在面向对象设计中主要使用属性描述对象的静态特征. c.属性设置过程中一般会用到get和set两个方法.可以在方法里加入逻辑处理数据,灵活拓展使用. 标注:因为属性不占用实际内存,所以属性

全栈JavaScript之路(十四)HTML5 中与class属性相关的扩充

1. getElementByClassName() :支持getElementsByClassName()方法的浏览器有IE 9+.Firefox 3+.Safari 3.1+.Chrome 和 Opera 9.5+. 2. classList 属性 :  classList 属性是新集合类型 DOMTokenList  的实例.DOMTokenList 类型有一个lenght 属性 ,表示包含了多少子元素,要取得每一个元素可以通过item() 方法访问,也可以用 [ ] 方法 访问. 此外这

面向对象中特殊方法的补充、isinstance/issubclass/type、方法和函数、反射

一.面向对象中特殊方法的补充 1.__str__ 能将对象名改成你想要的字符串,但是类型还是类 class Foo(object): def __init__(self): pass def func(self): pass def __str__(self): return "f1" obj = Foo() print(obj,type(obj)) # f1 <class '__main__.Foo'> 2.__doc__ 能将类的注释文档显示出来 class Foo(o

对php面向对象中魔术方法的认识

<?php//header(charset="utf8");    //echo 'hey 这里是描述我对php 面向对象中各种魔术方法的认识.';/* *魔术方法是在一些特定情况下会自动调用的一些php系统自定义函数 *这些函数都很有个性,他们统一以__两个 _ (下划线)开头. * 下面对于php 中这些常用的魔术方法一些个人认识. **/class demo {    public $name;    public $age; //当实例化这个类,首先会自动调用的方法 __

面向对象中的常用属性和方法

图片的由来看下面: 1.hasOwnProperty:看是不是对象自身下面的属性 var arr = []; arr.num = 10; Array.prototype.num2 = 20; //所有的数组对象都有num2,并不只是arr自身的属性 //alert( arr.hasOwnProperty('num') ); //true alert( arr.hasOwnProperty('num2') ); //false 2.constructor: 查看对象的构造函数,每个原型都会自动生成

获取class对象的三种方法以及通过Class对象获取某个类中变量,方法,访问成员

public class ReflexAndClass { public static void main(String[] args) throws Exception { /** * 获取Class对象的三种方式 * 1 Object --> getClass(); * 2 任何数据类型(包括基本数据类型)都有一个静态的class属性 * 3 通过Class类的静态方法:forName(String className)(常用) * * * 注意:在运行期间,一个类,只有一个Class对象产

mysql中的锁的相关知识

数据库锁:数据库锁出现的原因是为了处理并发问题. 并发控制一般采用三种方法,分别是乐观锁和悲观锁以及时间戳. 乐观锁认为一个用户读数据的时候,别人不会去写自己所读的数据,就是不做任何操作.悲观锁就刚好相反,觉得自己读数据库的时候,别人可能刚好在写自己刚读的数据,其实就是持一种比较保守的态度,悲观锁就是在读取数据的时候,为了不让别人修改自己读取的数据,就会先对自己读取的数据加锁,只有自己把数据读完了,才允许别人修改那部分数据,或者反过来说,就是自己修改某条数据的时候,不允许别人读取该数据,只有等自

Quaternion:通过API对Quaternion(四元数)类中的方法属性进行测试(一)

1.差值方法Lerp 返回一个四元数,返回From与To的差值,并以Time.detaltime*speed变化着 Quaternion.Lerp(From.rotation,To.Rotation,Time.detaltime*speed); 例如 以下代码中C,D将以A.Rotation为起始点,以B.rotation为结束点以total为速度进行变化 using UnityEngine; using System.Collections; pubilc class Eaxmble:Mono

java面向对象中的方法重载与方法重写的区别

一.方法重载(overload) a:一个类中允许声明多个方法 b:一个类中允许有多个方法名称一样,但是参数不同的多个方法.通过参数不同来区别不同的方法. 参数不同表现为: 1:参数个数不同 2:参数类型不同 3:参数类型的顺序不同也是参数类型不同 4:在参数类型一样的情况下,名称不一样不代表参数不一样 重载方法的调用: 1:根据调用的时候实际参数来判断到底调用的是哪一方法 2:根据参数的要求,严格匹配传入的对应类型 3:如果严格匹配不到的话,默认遵循就近匹配 4:根据数据默认转换的顺序就近匹配