# man > Class::Data::Inheritable

---
type: CommandReference
command: Class::Data::Inheritable
mode: perldoc
section: "3pm"
source: perldoc
---

## Quick Reference
- `Class->mk_classdata('DataFile')` — create inheritable class data accessor
- `Class->mk_classdata(DataFile => $value)` — create and set initial value
- `Class->DataFile($value)` — set class data
- `my $val = Class->DataFile` — get class data
- `Subclass->DataFile` — inherits value from parent unless overridden
- Override an accessor by defining a method that calls `$self->_<name>_accessor(@_)`

## Name
Class::Data::Inheritable - Inheritable, overridable class data

## Synopsis
perl
package Stuff;
use base qw(Class::Data::Inheritable);
Stuff->mk_classdata('DataFile');
Stuff->DataFile('/etc/stuff/data');

# Or one-shot:
Stuff->mk_classdata(DataFile => '/etc/stuff/data');
## Methods
- `mk_classdata($name, [$value])` — Creates a class method `$name` that gets/sets inheritable class data. If `$value` is given, it sets the initial value. An alias `_${name}_accessor` is also created, allowing clean overriding of the accessor.

## Examples
perl
package Pere::Ubu;
use base qw(Class::Data::Inheritable);
Pere::Ubu->mk_classdata('Suitcase');
Pere::Ubu->Suitcase('Red');

package Raygun;
use base qw(Pere::Ubu);
# Inherits Suitcase
my $color = Raygun->Suitcase;   # 'Red'

# Override in subclass – changes no longer affect parent
Raygun->Suitcase('Orange');

# Custom accessor using alias
sub Suitcase {
    my ($self) = shift;
    warn "Fashion tragedy" if @_ and $_[0] eq 'Plaid';
    $self->_Suitcase_accessor(@_);
}
## See Also
`perltooc` — a detailed discussion of class data techniques in Perl